【问题标题】:XSLT - get timezone offset from localeXSLT - 从语言环境中获取时区偏移量
【发布时间】:2013-12-06 12:40:18
【问题描述】:

是否可以在 XSLT 中检索特定语言环境的时区偏移量?有一个名为 in-summer-time 的函数,它接收一个 dateTime 和一个语言环境标识符。它返回给定日期是否属于该国家/地区的夏令时。

我有一个要求,我需要计算特定语言环境的偏移时间。例如,我得到智利的当地时间,我需要将其转换为英国的当地时间。我可以利用夏季时间的功能来计算日光调整。但是,我在哪里可以获得智利的实际偏移时间?

P.S.:adjust-time-to-timezone 函数没有帮助,因为它需要将偏移时间传递给函数(如 2013-05-10T08:10:30-05:00)。我手头没有偏移时间(-05:00)信息。

【问题讨论】:

标签: java xml xslt-1.0 xslt-2.0 saxon


【解决方案1】:

有一个撒克逊扩展函数

撒克逊人:适应公民时代

http://www.saxonica.com/documentation/index.html#!functions/saxon/adjust-to-civil-time

这看起来好像可以达到目的。

(文档中给出函数签名的标题是错误的。)

例如

saxon:adjust-to-civil-time(xs:dateTime('2013-12-06T12:00:00Z'), 'America/Santiago')

返回

2013-12-06T09:00:00-03:00

【讨论】:

  • 谢谢迈克。 adjust-to-civil-time 功能需要 UTC 格式的输入时间。就我而言,输入时间是智利的当地时间,这是问题所在。
  • 是的,但是应该可以使用 adjust-to-civil-time 来获取反向转换所需的信息。如果您采用 UTC 日期/时间并应用调整到公民时间,则结果上的 getTimezone() 将为您提供智利的时区位移,然后您可以使用 adjust-dateTime-to-timezone 应用此位移(也许在否定它之后?)到当地智利时间将其转换为UTC。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 2016-05-07
相关资源
最近更新 更多