У меня есть проблема с двумя частями, или, возможно, это два разных способа решить эту проблему. Я получаю строку ISO как 2015-11-17T17: 10: 24-0800. Конечная цель состоит в том, чтобы отобразить строку как 11/17/15 5:10 PM в некотором HTML, создаваемом некоторым Freemarker. Строка, которую я получаю, может быть в любом часовом поясе, но мне всегда нужно отображать строку в ее локальном часовом поясе, как показано выше. В настоящее время наш код был просто принимать строку и передать его в шаблон и coverting как таковой:Joda ISODateTimeFormat не использует часовой пояс в String
<#assign mydate = obj.mydate?datetime("yyyy-MM-dd'T'HH:mm:ssz")?string.short>
Это уже не хорошо, так как я считаю, Freemarker использует локальный часовой пояс системы и теперь мы получаем больше, чем один часовой пояс. Я вижу, что существует метод iso в freemarker. Поэтому я стараюсь
<#assign order_date = order.order_date?iso("yyyy-MM-dd'T'HH:mm:ssz")>
, но я получаю сообщение об ошибке:
For "?iso" left-hand operand: Expected a date, but this evaluated to a string
Ok мне нужна дата. Работа с Joda, я пытаюсь создать объект типа DateTime по:
DateTime dateTime = ISODateTimeFormat.dateTimeNoMillis().parseDateTime("2015-11-17T17:10:24-0800");
Но, как представляется, использовать мой местный часовой пояс, а также и показывает 2015-11-17T20: 10: 24.000-05: 00. Я знаю, что могу делать с Zone (...), но я не знаю, кроме зоны -0800, или какой-либо другой зоны в конце строки. Поэтому я уже не понимаю, что делать. О, и я не могу изменить формат строки, которую я получаю.
FreeMarker отображает 'java.util.Date'-s с часовым поясом, указанным в настройке' time_zone'. Локальный часовой пояс сервера только по умолчанию. Кроме того, при разборе дат, содержащих часовой пояс, текущий часовой пояс не соответствует. '? iso', как четко указано в документации, предназначено для форматирования дат, а не для их разбора. '? datetime' предназначен для парсинга дат, а также может анализировать даты ISO (см. документацию). – ddekany
Спасибо за дополнительное разъяснение. В итоге я использовал параметр time_zone. Мне было трудно понять различную цель iso. – Michael