在XSLT中将GMT时间转换为本地时间

3

如何自动将GMT时间转换为本地时间(MDT或MST)。

我已经实现了以下内容,但我需要一个条件来确定基于日期的UTC-6或UTC-7。

<xsl:value-of select="xs:dateTime($docdate) + xs:dayTimeDuration('-PT7H')"/>

谢谢 Hari

2个回答

2
你可以查看函数adjust-time-to-timezone($arg as xs:time?),它将$arg中给定的时间调整为动态上下文中给定的隐式时区。虽然没有保证,但在许多实现中,这可能是操作系统环境中设置的时区。
例如,如果我评估表达式:
adjust-time-to-timezone( xs:time('20:45:00.0+01:00'))

我的系统(当前设置为UTC西7小时)返回该值

12:45:00-07:00

它在Stylus Studio中运行良好。但是当我在SAP中使用时,我无法编译XSL,并收到错误消息,指出“在XSL转换期间发生错误,无法编译样式表”[链接]http://temp-share.com/show/f3Yg9O92n [链接]http://temp-share.com/show/3YgFpWkRx包含XML和XSLT文件。 - hari
有什么想法是什么问题? - hari
你的XSLT样式表显示它是一个1.0版本的样式表,但adjust-dateTime-to-timezone和xs:dateTime函数是2.0版本的函数。如果你在SAP中使用的XSLT引擎支持2.0版本,尝试更改样式表元素上的版本属性。但是2.0处理器通常可以处理这种情况而不会崩溃,因此你的系统可能正在以自己的方式告诉你,它无法处理2.0函数。 - C. M. Sperberg-McQueen
谢谢C.M.,这正是我想的...但我想听专家的意见。那么,在XSLT 1.0中,我还有什么方法可以进行日期操作呢? - hari
XSLT 1.0在环境查询方面并不多,但如果您的处理器支持EXSLT日期时间函数,则可以尝试使用exslt:date-time() 来确定操作系统与UTC之间的当前偏移量。 - C. M. Sperberg-McQueen

-1

那么,你是说我可以在XSL中编写JS吗?如果是的话,能否给我提供一个例子? - hari
我找到的第一个例子是http://www.webdeveloper.com/forum/showthread.php?20815-Using-Javascript-in-XSL。 - Mihai8
只有在支持JavaScript的XSLT引擎中才能工作,可能是在浏览器或已经存在的JavaScript中。 - dezzer10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接