FreeMarker中的时区设置不会影响所有日期时间

丰富:

您好-我在ClickDimensions模板中使用FreeMarker,但在强制日期时间使用正确的时区时遇到一些问题。我在模板顶部有这个:

<#setting time_zone="Canada/Pacific">

我已经玩了一点,将其设置为不同的区域(例如“ America / New_York”),当我称呼它时它可以正确地调整时间:

${.now}

太好了。但是 ...我有一个变量('startdate'),其中保存有从Microsoft Dynamics实例提取的日期时间值。由于某种原因,它认为这是太平洋日期时间(偏移量是-07:00),但不是,它是UTC。

这是我写的一些例子:

${startdate}
${startdate?datetime("M/d/yyyy h:mm a")}
${startdate?datetime("M/d/yyyy h:mm a")?string.iso_m}
${startdate?datetime("M/d/yyyy h:mm a")?string.iso_m_nz}
${startdate?datetime("M/d/yyyy h:mm a")?string.iso_m_nz_u}

这就是我收到的:

  • 2019/5/23下午4:30
  • 五月23,2019 4:30:00下午
  • 2019-05-23T16:30-07:00
  • 2019-05-23T16:30
  • 2019-05-23T23:30

第三行揭示了问题-datetime偏移量不正确。它应显示为+00:00,而不是-07:00。

如何更改与日期时间关联的偏移量?

ddekany:

问题是您解析为日期时间的字符串不包含时区或偏移量。datetime技术上讲java.util.Date(不是java.time.LocalDateTime,可以高兴地保持对时区的了解),FreeMarker必须盲目假定某个时区,而这就是当前时区。

至少从2.3.30版开始,没有的“如果解析的字符串不包含该信息,请假定该时区”选项?datetime

真正正确的解决方案是将这些日期作为java.util.Date-s而不是字符串放入数据模型中理想情况下,将字符串解析为任何对象(java.util.Date在这种情况下为)都不是模板的职责。

如果您必须在模板内部解决此问题,因为无论如何该字符串的格式都很难连接到模板中,因此您可以执行以下操作:

<#function parseMsDynDateTime(s)>
  <#return (startdate + " +0000")?datetime("M/d/yyyy h:mm a Z")>
</#function>

然后

${parseMsDynDateTime(startdate)?string.iso_m}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么时区对话不会影响在matplotlib中绘制日期时间对象的图形?

在Java中为所有时区保存日期时间

如何在Django中显示不同时区中的所有日期时间对象

Django时区设置更改不会影响模型

如何检查当前日期/时间是否在可变时区中超过了设置的日期/时间?

无论计算机中设置的日期时间如何,获取指定时区的日期时间

在MySQL中,日期时间是否附有任何时区?

Google表格中带有时区的日期时间?

将c#中的所有日期时间字段转换为已登录用户的时区的最佳方法是什么?

将所有日期/日期时间元素转换为本地时区

如何在导航栏中为我在 django 中的所有模板设置日期时间?

在独立于浏览器时区和时间的 javascript 中设置特定日期和时间

将可变 Pandas DataFrame 的所有日期时间列转换为不同的时区

删除所有git提交的时间和时区,但保留日期

如何创建适用于所有日期的时区感知时间对象?

设置时区不会更改CakePHP 3.x中的显示时间

带日期或不带时区的带有日期或时间戳的查询中的generate_series()处理

根据时区在 C# 中设置日期时间,如 +08:00

字符串中的日期时间时区

Django的显示日期时间不会根据用户的本地时区而改变

除非定义了过期时间,否则不会在所有目录中设置PHP cookie

在UNIX时间戳记中设置默认时区

带有时区的时间戳到熊猫日期时间

如何显示日期时间,本地时间没有在最后的时区?

Python 将日期时间设置为 UTC 时区

根据带有时间戳和时区的文本中的日期对Excel表进行排序

在 UTC 中创建可以由 Matplotlib 导入的没有时区的日期时间对象

将我现有的日期时间列更新为我在 mysql 中各自的时区

在Django中获取没有时区的Postgres日期时间字段