在xslt转换方面寻求一些帮助,以节省日光在不同时区进行dateTime。在xslt中进行dateTime转换时如何处理EST与EDT?
在此处输入代码
case SET_MULTIFORM:
return {
...state,
multiForm: [...state.multiForm, ...Array.from({ length: action.payload }).map(() => ({firstName: '', lastName: ''}))]
};
看到了这篇文章,但所有内容都表明我找不到想要的东西。 Similar query on stack overflow
答案 0 :(得分:3)
在XSLT 3.0中,您可以使用$place
函数的format-dateTime()
参数来实现此目的。引用函数和运算符规范9.8.4
如果$ place参数以IANA时区的形式提供 实现识别的名称,然后是日期或时间 格式化后,将其调整为适用于 时区。例如,如果xs:dateTime值为2010-02-15T12:00:00Z 格式为$ place参数设置为America / New_York,然后 输出将好像值2010-02-15T07:00:00-05:00 提供。此调整考虑了夏令时 在可能的情况;如果相关日期是夏令时 纽约时间,然后将其调整为时区偏移量-PT4H而不是 比-PT5H。仅可以使用夏令时进行调整 该值包括一个日期,并且该日期在 时区数据库覆盖的范围。
请注意,这种表达方式为实现提供了“不识别”时区名称的选项;但让我们假设他们会这么做。
当然,首先需要将2019/03/09 14:00
转换为xs:dateTime
值2019-03-09T14:00:00Z
,这是简单的字符串操作。
现在,您可以通过执行America/New_York
来确定format-time(xs:dateTime('2019-03-09T00:00:00'), '[Z]', (), (), 'America/New_York')
的时区偏移量,这将为您提供诸如“ -05:00”(作为字符串)的值。您可以使用更简单的字符串操作将其转换为dayTimeDuration -PT05H00M
,然后使用adjustDateTimeToTimezone()
将此位移应用于原始日期/时间值。
format-dateTime()
的XSLT 2.0版本未定义此功能。