在XSL中使用时区格式化日期

问题描述

我从XML接收日期,格式为

value="2020-08-11T21:00:00.000Z"

我居住在格林尼治标准时间+3时区,因此该日期应返回2020-08-12。如果我仅输出日期并在浏览器中显示它,则似乎可以正确显示。但是,当我使用apache FOP将其输出为PDF时,它仅显示在那里显示的值。

我尝试使用 format-dateTime(),但是它将日期输出为前一天。 我还能尝试什么?

此外,这里的子字符串也不好。我需要XSLT自动将3小时(取决于时区)添加到给定日期,以便它返回正确的日期。

解决方法

format-dateformat-dateTime采用一个时区/位置,您要为其设置date或dateTime的格式为第五个参数,例如format-dateTime(xs:dateTime('2020-08-11T21:00:00.000Z'),'[Y0001]-[M01]-[D01] [z]','en',(),'Asia/Baghdad'),您应该得到2020-08-12 GMT+03:00

https://xsltfiddle.liberty-development.net/6pS2B6W