В базе хранится дата в формате TIMESTAMP. В базе записана вот эта дата
2010-12-04 01:45:06
Выбирается поле вот так. Естественно поле в java имеет тип тоже timestamp.
resultSet.getTimestamp("timestamp")
Затем в формате json клиенту возвращается вот это:
2010-12-04 01:45:06.0
а надо, чтоб вернулось вот в таком формате:
2010-12-03T17:45:06Z
Если использовать
timestamp.toLocalDateTime()
то возвращается вот это:
2010-12-04T01:45:06
Если использовать
timestamp.toInstant()
то возвращается:
2010-12-03T22:45:06Z
И в обоих случаях запись имеет неверное время. Что делать?
Вы не совсем верно понимаете, похоже то что вы хотите получить. Если в конце стоит Z
- это означает время в универсальном формате (то есть мировое время, приведенное к 0-му меридиану), поэтому у вас время и отличается.
А в БД у вас время в каком часовом поясе хранится?
Z stands for Zulu time, which is also GMT and UTC.
По хорошему надо делать так.
//готовим формат вывода
private final static String ISO_8601_FORMAT_STRING="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
DateFormat dateFormat = new SimpleDateFormat(ISO_8601_FORMAT_STRING, Locale.ENGLISH);
TimeZone utcTimeZone=TimeZone.getTimeZone("UTC"); //задаем часовой пояс
dateFormat.setTimeZone(utcTimeZone);
//выводим
Timestamp myTimestamp; //таймстемп из БД
String s=dateFormat.format(myTimestamp); //собственно вывод
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
В jquery полный ноль, прошу прощения за возможно нелепый вопрос
Всем привет, в общем дали проект на версткуРуководитель вечно чем то недоволен, говорит опять говнокод пишешь