在下面的示例中,我们正在尝试将“日期”从一种格式转换为其他格式,例如要转换为UTC格式,例如2021-07-26T18:37:15.490Z
有人能帮忙吗。
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<date>
<finish_dstamp>20190716140831</finish_dstamp>
</date>
现有输出:
<?xml version="1.0" encoding="UTF-8"?>
<date>
<finish_dstamp>20190716140831</finish_dstamp>
</date>
XSLT代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
参考URL:https://xsltfiddle.liberty-development.net/pNEj9dB/1
您还可以使用正则表达式解析日期和时间组件。正则表达式和捕获组的示例以构造dateTime值(您也可以将其解析为dateTime以确保有效)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="finish_dstamp/text()">
<xsl:sequence select="replace(., '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1-$2-$3T$4:$5:$6')"/>
</xsl:template>
</xsl:stylesheet>
使用xsl:analyze-string的示例:
<xsl:template match="finish_dstamp/text()">
<xsl:analyze-string select="." regex="(\d{{4}})(\d{{2}})(\d{{2}})(\d{{2}})(\d{{2}})(\d{{2}})">
<xsl:matching-substring>
<xsl:sequence select="xs:dateTime(
string-join((
string-join((regex-group(1),regex-group(2),regex-group(3)), '-'),
string-join((regex-group(4),regex-group(5),regex-group(6)), ':')),
'T')) "></xsl:sequence>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:sequence select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
您可以解析出日期和时间的组件,然后将函数与xs:date()和xs:time()参数一起使用,并将其放入与finish\u dstamp/text()匹配的专用模板中:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="finish_dstamp/text()">
<xsl:sequence select="dateTime(
xs:date(
concat(
substring(., 1, 4),
'-',
substring(., 5, 2),
'-',
substring(., 7, 2)
)
),
xs:time(
concat(
substring(., 9, 2),
':',
substring(., 11, 2),
':',
substring(., 13, 2)
)
)
)"/>
</xsl:template>
</xsl:stylesheet>
您可以解析dateTime的组件并使用xs: dateTime()
构造函数:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="finish_dstamp/text()">
<xsl:sequence select="xs:dateTime(
concat(
substring(., 1, 4),
'-',
substring(., 5, 2),
'-',
substring(., 7, 2),
'T',
substring(., 9, 2),
':',
substring(., 11, 2),
':',
substring(., 13, 2)
)
)"/>
</xsl:template>
问题内容: 我从服务器获取UTC时区的字符串日期,我需要将其转换为本地时区。 我的密码: 此打印- utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 11:42:00 +0000) 如果我删除 它打印 utc:2015-04-01T11:42:00.269Z,日期:可选(2015-04-01 08:42:00 +0000) 我的当地时区是UTC +3,在第
我想把这个2021年1月20日20:10:14转换成yyyy-MM-dd'T'HH:MM:ss格式。Android系统中的SSS'Z'。目前我正在使用函数,但当我转换为本地格式时,我没有得到原始时间
我有一个方法可以生成一个随机的日期和时间。 打印输出类似于 我见过几个这样的问题和页面,但他们没有给我一个线索。
问题内容: 如何获得日期的毫秒时间?我有以下代码。 此变量beginupd包含格式 2011年10月12日星期三11:55:03 GMT + 05:30 现在如何在Long数据类型中将此格式转换为毫秒时间?非常感谢您的任何帮助,并在此先感谢… 问题答案: JavaDoc指出: 返回自此Date对象表示的自格林尼治标准时间1970年1月1日00:00:00以来的毫秒数。
问题内容: 我正在使用需要json日期格式的API。 我需要转换我的JavaScript日期 1970年1月17日星期六格林尼治标准时间+0100(浪漫标准时间) 以json日期格式 /日期(1405699200)/ 问题答案: 列各项可以吗?
问题内容: 我有一个输出数据数组的PHP脚本。然后将其转换为使用函数。 我的问题是我的数组中有一个日期,但日期格式不正确。 我怎样才能在PHP中转换它呢? 代替上面的日期,我需要等效的JavaScript函数 新的Date() 当我输出上述内容时,我得到以下内容:“ Fri Jun 01 2012 11:08:48 GMT + 0100(GMT Daylight Time)”但是,如果我将PHP日