如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式

How to get RFC1123 Date format for current date time using XSLT 2.0

我正在尝试在 XSLT 中以 RFC1123 日期格式检索当前日期时间。 有人用 XSL2.0 试过吗?

我在 XSLT2.0 中看到了基于区域转换各种日期时间的代码,并以 yyyy/mm/dd 或 YYYY:MM:DDTHH:MM:SS.0Z 等特定日期时间格式进行格式化,但找不到方法来将其格式化为这样显示

2019 年 7 月 9 日星期二20:34:29格林威治标准时间

concat(date:add('1970-01-01T00:00:00',concat('PT',floor(dp:time-value() div 1000),'S')),':',dp:time-value() mod 1000)

这个 returns GMT 格式像这样 2019-07-09T21:01:26:547

如何使用 XSLT2.0 将其格式化为 - 2019 年 7 月 9 日星期二 20:34:29 GMT?

使用current-dateTime()获取当前日期和时间,然后使用format-dateTime根据需要进行格式化,详见规范https://www.w3.org/TR/xslt20/#function-format-dateTime:图片字符串

'[FNn,*-3], [D01] [MNn] [H01]:[m01]:[s01] [z]'

在德国夏令时我的机器上给出

format-dateTime(current-dateTime(), '[FNn,*-3], [D01] [MNn] [H01]:[m01]:[s01] [z]')

作为

Wed, 10 July 12:01:13 GMT+02:00

这是一个使用 format-dateTime 的示例,我没有检查您引用的 RFC 的确切细节以尝试实现确切的要求。

感谢您的快速回复,您的解决方案可以使用 Altova XML Spy,但不幸的是,它在 Datapower 中使用 XSLT2.0 对我不起作用,不确定哪里出了问题,可能是 DP 固件版本的问题.

仅供其他用户使用,以便 post 更有帮助。我尝试了以下 2 个对我不起作用的选项,但可能对其他人有用。

使用 XSLT

<xsl:value-of select="java:java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.now(ZoneOffset.UTC))"></xsl:value-of>

<xsl:value-of select="format-dateTime(current-dateTime(), '[FNn,*-3], [D01] [MNn] [H01]:[m01]:[s01] [z]')"/>

所以我使用 Gateway 脚本获得了我正在寻找的相同日期格式,并使用下面的方法将其存储在上下文变量中

var dateNeeded = new Date()).toUTCString(); //Thu, 11 Jul 2019 21:08:12 GMT