В файле у меня условная база данных, в которой хранятся объекты с данными. Одним из данных является дата и записывается дата в формате dd.mm.yyyy, в коде я это сделал полем:
DateFormat FORMAT = new SimpleDateFormat("dd.MM.yyyy");
Когда заношу данные об объекте в файл, перевожу их в String. Затем считываю данные из файла, создаю объект и ему надо просетить все поля данными из считываемого файла. Вот тут с датой возникает проблема и я не знаю как её решить. В файле дата в виде 23.11.2017, я вот таким образом её преобразовываю из String в Date order.setDateFrom(FORMAT.parse(fields[17]));
и когда, после этого, записываю данные снова в файл, то дата записывается уже в таком виде Thu Nov 23 00:00:00 EET 2017
. Подскажите как мне просетить дату, чтобы записывалась в файл в виде "dd.MM.yyyy"
Метод считывания из файла возвращает список объектов:
private static LinkedList<Order> gettingListObjectsFromFileOrderDB(String path)throws Exception{
if(path == null)
throw new BadRequestException("This path " + path + " is not exists");
LinkedList<Order> arrays = new LinkedList<>();
try (BufferedReader br = new BufferedReader(new FileReader(path))){
String line;
while ((line = br.readLine()) != null){
String[] result = line.split("\n");
for (String el : result){
if (el != null){
String[] fields = el.split(",");
Order order = new Order();
order.setId(Long.parseLong(fields[0]));
String idUser = "";
for (Character ch : fields[1].toCharArray()) {
if (ch != null && Character.isDigit(ch)) {
idUser += ch;
}
}
System.out.println("User - " + idUser);
order.setUser(findUserByIdInFileUserDB(Long.parseLong(idUser)));
String idRoom = "";
for (Character ch : fields[6].toCharArray()) {
if (ch != null && Character.isDigit(ch)) {
idRoom += ch;
}
}
System.out.println("Room - " + idRoom);
order.setRoom(findRoomById(Long.parseLong(idRoom)));
order.setDateFrom(FORMAT.parse(fields[17]));
System.out.println("DateFrom after readed from file OrderDB - " + order.getDateFrom());
order.setDateTo(FORMAT.parse(fields[18]));
System.out.println("DateTo after readed from file OrderDB - " + order.getDateTo());
order.setMoneyPaid(Double.parseDouble(fields[19]));
arrays.add(order);
}
}
}
}catch (FileNotFoundException e){
throw new FileNotFoundException("File does not exist");
} catch (IOException e) {
throw new IOException("Reading from file " + path + " failed");
}
return arrays;
}
Метод записи в файл:
public static void cancelReservation(long roomId, long userId)throws Exception{
if (roomId == 0 || userId == 0)
throw new BadRequestException("Invalid incoming data");
if(checkIdRoomInOrderDB(utils.getPathOrderDB(), roomId))
throw new BadRequestException("Room with id " + roomId + " is not exist");
if (checkIdUserInOrderDB(utils.getPathOrderDB(), userId))
throw new BadRequestException("User with id " + userId + " is not exist");
StringBuffer res = new StringBuffer();
int index = 0;
for (Order el : gettingListObjectsFromFileOrderDB(utils.getPathOrderDB())) {
if (el != null && el.getUser().getId() != userId && el.getRoom().getId() != roomId) {
res.append(Long.toString(el.getId())).append(",");
res.append(el.getUser().toString()).append(",");
res.append(el.getRoom().toString()).append(",");
res.append(el.getDateFrom().toString()).append(",");
res.append(el.getDateTo().toString()).append(",");
res.append(Double.toString(el.getMoneyPaid())).append("\n");
}
index++;
}
writerInFailBD(utils.getPathOrderDB(), res);
}
Вывод в консоль я делал для себя, чтобы на ходу посмотреть что получается.
Без кода сложно сказать наверняка, но скорее всего при повторной записи вы записываете дату (экземпляр класса Date) через вызов метода toString(), поэтому на выходе вы получаете формат по-умолчанию. А должно быть так:
DateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date date = format.parse(someString); // получаем дату из строки
String output = format.format(date); // а теперь наоборот
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
На C++ или на java выгоднее/дешевле/быстрее реализовать программу для работы с большими объемами данных? Уточню что архитектура программы предполагает...
Когда я формирую INVITE ответ другому юзеру, то нужно добавить пустую строку между headers и sdp, если я ее не добавляю, то звонок не происходитЕсть...
В общем, более абсурда я не виделЕсть голосовое приложение, которое по логике, должно отправлять 1234 на сервер(точнее на планшет, на котором...
У меня в приложении есть много float значений для денег, так вот когда я некоторые перемножаю у меня в ответ выходит 00