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

Posted

技术标签:

【中文标题】如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式【英文标题】:How to get RFC1123 Date format for current date time using XSLT 2.0 【发布时间】:2019-11-19 11:45:17 【问题描述】:

我正在尝试在 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)

这将以 GMT 格式返回,例如 2019-07-09T21:01:26:547

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

【问题讨论】:

【参考方案1】:

使用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 的确切细节以尝试实现确切的要求。

【讨论】:

【参考方案2】:

感谢您的快速回复,您的解决方案使用 Altova XML Spy 有效,但不幸的是,它在 Datapower 中使用 XSLT2.0 对我不起作用,不知道出了什么问题,可能是 DP 固件版本有问题。

只是为了让其他用户使这篇文章更有帮助。我尝试了以下 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]')"/>

所以我使用网关脚本来获取我正在寻找的相同日期格式并将其存储在上下文变量中

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

【讨论】:

类似的 java 链接 - ***.com/questions/7707555/…

以上是关于如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式的主要内容,如果未能解决你的问题,请参考以下文章

XSLT 2.0:根据 for-each -group 的当前索引评估和修改元素值

XSLT 2.0 中的日期时间格式

Saxon XSLT 2.0 和 RFC 822 日期格式

SOA 转换中的 XSLT 映射以获取上个月的最大日期

XSLT 可以插入当前日期吗?

如何使用 xslt 2.0 根据我的特定标准计算所有 <w:p> 节点?