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

Covert GMT to local time in XSL 1.0

我的时间格式如下: 2017 年 12 月 21 日03:52:42:000000

我需要在 xslt 中将其转换为本地时区。

在我的代码中,我使用以下格式:

<xsl:param name="format" select="'h:mm:ss a'"/>

这似乎不正确,请任何人更正我的格式。

如果您希望 21 Dec 2017 03:52:42:000000 格式化为本地时间 5:52:42 之类的格式并使用 xslt 1.0,则无法直接格式化日期时间值。

xslt param 就像一个变量,但它的值可以从调用者上下文中设置,例如调用模板或由 xslt 处理器给出,因此在您的示例中 $format 的值将是 'h:mm:ss a' 如果它没有被调用者覆盖。所以基本上这将是您的输出,而不是格式化时间。

当然,如果您使用带有此预定义格式字符串的扩展对象,那么格式化是辅助方法的责任,而不是 xslt 的问题。

如果您想使用本机 xslt 1.0 格式化日期时间,那么这里有一些如何操作的示例:see XSLT 1.0 stylesheet sample or in here there is sample for time splitting。所以时间格式化只是切掉了字符串部分。 例如你的输入 <xsl:variable name="InputTime" select="'21 Dec 2017 03:52:42:000000'"/><xsl:value-of select="substring($InputTime, 13, 8)"/> 输出将是 03:52:42

如果你将它分成小时、分钟和秒那么你可以将它们修改为数字。