Mic*_*ael 3 java freemarker iso8601 jodatime
我有一个由两部分组成的问题,或者可能有两种不同的方法来解决这个问题。我收到一个 ISO 字符串,如 2015-11-17T17:10:24-0800。最终目标是在某些 Freemarker 生成的 HTML 中将字符串显示为 11/17/15 5:10 PM。我收到的字符串可以位于任何时区,但我总是需要在其本地时区显示该字符串,如上所示。目前,我们的代码只是获取字符串并将其传递到模板中并进行隐藏:
<#assign mydate = obj.mydate?datetime("yyyy-MM-dd'T'HH:mm:ssz")?string.short>
Run Code Online (Sandbox Code Playgroud)
这不再是好事,因为我相信 Freemarker 正在使用系统的本地时区,而现在我们获得了多个时区。我看到freemarker中有一个iso方法。所以我尝试
<#assign order_date = order.order_date?iso("yyyy-MM-dd'T'HH:mm:ssz")>
Run Code Online (Sandbox Code Playgroud)
但我不断收到错误:
For "?iso" left-hand operand: Expected a date, but this evaluated to a string
Run Code Online (Sandbox Code Playgroud)
好吧,我需要一个约会。与 Joda 合作,我尝试通过以下方式创建日期时间对象:
DateTime dateTime = ISODateTimeFormat.dateTimeNoMillis().parseDateTime("2015-11-17T17:10:24-0800");
Run Code Online (Sandbox Code Playgroud)
但这似乎也使用我的本地时区并显示 2015-11-17T20:10:24.000-05:00。我知道我可以用 withZone(...) 做,但我不知道除了 -0800 之外的区域或在字符串末尾传递的任何区域。所以我现在不知道该怎么办。哦,我无法更改收到的字符串的格式。
DateTime dateTime = ISODateTimeFormat.dateTimeNoMillis().withOffsetParsed().parseDateTime("2015-11-17T17:10:24-0800");
Run Code Online (Sandbox Code Playgroud)
这将创建一个DateTime具有固定时区偏移量的-08:00.
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |