【问题标题】:xslt 1.0 yyyy-MM-ddHH:mm:ss to YYYY-MM-DDTHH:mm:ss.sssZxslt 1.0 yyyy-MM-ddHH:mm:ss 到 YYYY-MM-DDTHH:mm:ss.sssZ
【发布时间】:2014-08-04 05:00:35
【问题描述】:

我正在使用 xslt 1.0 并尝试将我的日期从 yyyy-MM-ddHH:mm:ss 转换为 YYYY-MM-DDTHH:mm:ss.sssZ

输入样本 <StartDate>2014-07-2217:18:15</StartDate>

NZST 时区所需的输出格式<startDate>2014-07-22T17:18:15.899+12:00</startDate>

我尝试使用http://wiki.apache.org/cocoon/Tips/JavaInXslt 中的示例但没有成功,因为我收到“未定义函数'sdf:new'”的错误。还查看了用于处理日期和时间的 EXSLT 扩展,但 EXSLT 没有时区功能。

请就如何将日期从 yyyy-MM-ddHH:mm:ss 转换为 YYYY-MM-DDTHH:mm:ss.sssZ 提出建议,而不是使用 concat "+12:00" 到 startDate 值的末尾?

提前致谢!

【问题讨论】:

  • 您应该能够使用NSTimeZone(您将其作为标签包含在内)和NSDateFormatter 执行此类操作。但既然你的问题是说你想使用 XSLT,你似乎排除了这一点。

标签: objective-c date xslt nstimezone


【解决方案1】:

如何将日期从 yyyy-MM-ddHH:mm:ss 转换为 YYYY-MM-DDTHH:mm:ss.sssZ 除了使用 concat "+12:00" 到 startDate 值结束?

没有其他办法*。 XSLT 1.0 没有日期的概念;您的数据是无意义的文本字符串,因此需要对其进行操作。

--
(*) 除非您通过使用用户定义的函数扩展处理器功能来创建自己的方式,就像您尝试过的那样。但这是一个不同的问题 - 恕我直言,使用字符串函数的解决方案是微不足道且令人满意的。

【讨论】:

  • 另一个问题也与夏令时有关,夏令时开始时是 +12:00,但夏令时结束时是 +13:00。夏令时在 9 月的最后一个星期日结束 (+13:00)
  • @user3756530 正如你所说,这是另一个问题。并且仅使用 XSLT 无法令人满意地解决它,因为 DST 起点和终点往往会波动。特别是在New Zealand 中,2007 年 9 月之前的日期需要与之后的日期区别对待(例如)。如果您想正确执行此操作,请使用外部函数或 Web 服务访问 timezone database
猜你喜欢
  • 1970-01-01
  • 2019-08-09
  • 2020-02-24
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多