Java, дата из отдельных значений JSON в строку на дату - PullRequest
0 голосов
/ 09 июля 2011

У меня есть объект JSON, возвращаемый в мое приложение, которое содержит дату

date": {
"year": 2011,
"month": 5,
"dayOfMonth": 30,
"hourOfDay": 16,
"minute": 13,
"second": 47
},

Мне нужно использовать эту дату и сохранить ее в базе данных SQL, скорее всего, в виде строки, поэтому я анализирую этуобъект даты, использующий функции JSON в Java

Здесь я пытаюсь отформатировать весь раздел в виде строки с тире между датой и двоеточиями между часами, минутами и секундами.Надеюсь, что я смогу разобрать его с SimpleDateFormat, но это не удалось с parserexceptionerror

dataObj.getJSONObject("dateObject").getString("year") + "-" +
dataObj.getJSONObject("dateObject").getString("month") + "-" +
dataObj.getJSONObject("dateObject").getString("dayOfMonth") + " " +
dataObj.getJSONObject("dateObject").getString("hourOfDay") + ":" +
dataObj.getJSONObject("dateObject").getString("minute") + ":" +
dataObj.getJSONObject("dateObject").getString("second");

Как лучше всего это сделать?

Мне нужно взять строки JSON и объединить ихв удобочитаемую дату, которую в идеале я могу превратить в строку.Это может быть форматированная дата, например, что будет делать simpledateformat, или это может быть в миллисекундах.

Оценка Insight

Ответы [ 2 ]

1 голос
/ 09 июля 2011

Предполагается, что цель состоит в том, чтобы преобразовать строковое представление информации о дате, отформатированное, например, как "2011-5-30 16:13:47", в java.util.Date экземпляр ...

String dateString = "2011-5-30 16:13:47";
Date date = new SimpleDateFormat("yyyy-M-dd HH:mm:ss").parse(dateString);
System.out.println(date);
// output: Mon May 30 16:13:47 MST 2011

String dateString2 = "2011-11-3 16:13:47";
Date date2 = new SimpleDateFormat("yyyy-M-dd HH:mm:ss").parse(dateString2);
System.out.println(date2);
// output: Thu Nov 03 16:13:47 MST 2011

Альтернативой может быть преобразование всех входных значений JSON в Java-целые, а затем использование Calendar.getInstance().set(year + 1900, month, date, hrs, min, sec).getTime().

1 голос
/ 09 июля 2011

Если вы еще этого не сделали, вам следует взглянуть на библиотеки JSON, которые значительно упрощают сериализацию и десериализацию json. Джексон и Google GSON отлично работают.

Библиотека JSON знает, как прочитать строку JSON даты в объекте java.util.Date.Затем вы можете сохранить его в своей базе данных в столбце datetime.Преимущество хранения дат в качестве правильных типов данных datetime в базах данных заключается в том, что вы можете создавать запросы гораздо проще, например, если вам нужно выбрать все записи между двумя датами.Если это был строковый столбец, ваш запрос быстро станет безобразным.Еще одна вещь, связанная с datetime, заключается в том, что она хранится в столбце фиксированной длины (во многих реализациях базы данных хранятся значения длиной в миллисекунды), поэтому хранение является эффективным.Сохранение в виде строки может легко занять больше места, если вы начнете считать все символы в полной строке SimpleDateFormat-ed.В результате этого построение индекса по дате и времени становится более эффективным, чем построение его по строковому столбцу переменной длины.

...