Java XSL使用偏移量比较将UTC时间转换为本地日期时间
我们收到与UTC时间相关的日期时间元素,如Java XSL使用偏移量比较将UTC时间转换为本地日期时间,java,datetime,xslt,xslt-1.0,utc,Java,Datetime,Xslt,Xslt 1.0,Utc,我们收到与UTC时间相关的日期时间元素,如2004-04-12T13:20:00Z 我们希望输出本地日期时间中的日期时间,即相对于UTC时间的偏移量,如2004-04-12T12:20:00-01:00 有人能在XSLT中帮助实现这一点吗? 或者是否存在一个函数模板来实现这一点?假设有这样一个XML测试文件 <?xml version="1.0"?> <root> <val>2004-04-12T13:20:00Z</val> &l
2004-04-12T13:20:00Z
我们希望输出本地日期时间中的日期时间,即相对于UTC时间的偏移量,如2004-04-12T12:20:00-01:00
有人能在XSLT中帮助实现这一点吗?或者是否存在一个函数模板来实现这一点?假设有这样一个XML测试文件
<?xml version="1.0"?>
<root>
<val>2004-04-12T13:20:00Z</val>
<val>2004-05-12T23:20:00Z</val>
<val>2004-06-12T00:20:00Z</val>
</root>
其产出是:
2004-04-12T13:20:00Z
2004-04-12T12:20:00-01:00
------------------
2004-05-12T23:20:00Z
2004-05-12T22:20:00-01:00
------------------
2004-06-12T00:20:00Z
2004-06-11T23:20:00-01:00
------------------
假设有这样一个XML测试文件
<?xml version="1.0"?>
<root>
<val>2004-04-12T13:20:00Z</val>
<val>2004-05-12T23:20:00Z</val>
<val>2004-06-12T00:20:00Z</val>
</root>
其产出是:
2004-04-12T13:20:00Z
2004-04-12T12:20:00-01:00
------------------
2004-05-12T23:20:00Z
2004-05-12T22:20:00-01:00
------------------
2004-06-12T00:20:00Z
2004-06-11T23:20:00-01:00
------------------
要将给定的日期时间值转换为当前的本地时区,请使用
adjust-dateTime-To-timezone()
函数,而不指定timezone
参数
例如:
<xsl:variable name="datetime">2004-04-12T13:20:00Z</xsl:variable>
<xsl:value-of select="adjust-dateTime-to-timezone($datetime)"/>
如果在转换时,系统的本地时间与UTC的偏移量为-1小时
重要: 如果您的本地时间与UTC的偏移不是恒定的,而是由于夏令时而发生变化,则这可能不会产生预期的结果。要正确地将2004年4月的日期转换为当时的当地时间,您需要知道该特定时间点的UTC偏移量。XSLT不具备这种功能,您必须在另一个可以访问XSLT的应用程序中进行转换
补充: 所有这些都需要XSLT2.0。既然您现在已经澄清了,那么您实际上是在使用XSLT 1.0:
T
-01:00
演示:要将给定的日期时间值转换为当前本地时区,请使用
调整日期时间到时区()
函数,而不指定时区
参数
例如:
<xsl:variable name="datetime">2004-04-12T13:20:00Z</xsl:variable>
<xsl:value-of select="adjust-dateTime-to-timezone($datetime)"/>
如果在转换时,系统的本地时间与UTC的偏移量为-1小时
重要: 如果您的本地时间与UTC的偏移不是恒定的,而是由于夏令时而发生变化,则这可能不会产生预期的结果。要正确地将2004年4月的日期转换为当时的当地时间,您需要知道该特定时间点的UTC偏移量。XSLT不具备这种功能,您必须在另一个可以访问XSLT的应用程序中进行转换
补充: 所有这些都需要XSLT2.0。既然您现在已经澄清了,那么您实际上是在使用XSLT 1.0:
T
-01:00
演示:假设您正在使用Oracle SOA套件进行转换
xp20:subtract-dayTimeDuration-from-dateTime (/ns0:Your/@DateTime, concat ("PT", substring-after (substring-before (xp20:timezone-from-dateTime (xp20:current-dateTime() ), ":" ), "-0" ), "H" ) )
这将解决您的问题假设您正在使用Oracle SOA套件进行转换
xp20:subtract-dayTimeDuration-from-dateTime (/ns0:Your/@DateTime, concat ("PT", substring-after (substring-before (xp20:timezone-from-dateTime (xp20:current-dateTime() ), ":" ), "-0" ), "H" ) )
这将解决您的问题谢谢您的回复。但是我们使用的是xslt1.0处理器,而这似乎用于xslt2.0处理器。你能建议并回答xslt1.0吗?@VJoe为什么你的问题被标记为
xslt-2.0
?我的错。更正为1.0谢谢回复。但是我们使用的是xslt1.0处理器,而这似乎用于xslt2.0处理器。你能建议并回答xslt1.0吗?@VJoe为什么你的问题被标记为xslt-2.0
?我的错。将其更正为1.0是否可以提供有关如何使用xslt1.0转换此内容的代码?@VJoe如何将其转换为什么?如何将2004-04-12T13:20:00Z转换为2004-04-12T12:20:00-01:00。我们确信我们的偏移值是-1。如何使用xslt1实现这一点。0@michael.hor257k,其中设置了-1参数?我需要+1:-)编辑:使用-3600秒创建。您可以提供有关如何使用xslt1.0转换此内容的代码吗?@VJoe如何将此转换为什么?如何将2004-04-12T13:20:00Z转换为2004-04-12T12:20:00-01:00。我们确信我们的偏移值是-1。如何使用xslt1实现这一点。0@michael.hor257k,其中设置了-1参数?我需要+1:-)编辑:在-3600秒内找到它