如何通过XSL将XML中的日期格式从YYYY-MM-DD转为DD-MM-YYYY?
解决XSL日期格式转换(YYYY-MM-DD转DD-MM-YYYY)
嘿,这个需求挺常见的,根据你使用的XSLT版本,有两种实用的解决方式:
如果你用的是XSLT 1.0(多数旧环境默认版本)
XSLT 1.0没有内置的日期格式化工具,我们可以用substring()函数把原日期拆分成日、月、年三个片段,再按DD-MM-YYYY的顺序拼接起来。
修改后的XSL代码如下:
<ClientList> <Client> <Data> <!-- 拆分原日期:YYYY-MM-DD → 提取日、月、年并拼接 --> <xsl:value-of select="concat(substring(CreateDate, 9, 2), '-', substring(CreateDate, 6, 2), '-', substring(CreateDate, 1, 4))"/> </Data> </Client> </ClientList>
简单拆解下逻辑:
substring(CreateDate, 9, 2):从原日期字符串第9位开始取2个字符,对应原日期里的“23”substring(CreateDate, 6, 2):从第6位开始取2个字符,对应“03”substring(CreateDate, 1, 4):从第1位开始取4个字符,对应“2018”concat()函数把这三个片段用-连接,最终输出23-03-2018
如果你用的是XSLT 2.0及以上版本
这个版本支持内置的format-date()函数,写法更简洁直观:
修改后的XSL代码如下:
<ClientList> <Client> <Data> <xsl:value-of select="format-date(xs:date(CreateDate), '[D01]-[M01]-[Y0001]')"/> </Data> </Client> </ClientList>
参数说明:
xs:date(CreateDate):先把字符串转成标准日期类型(确保原日期格式合法)[D01]:强制两位格式的日(不足两位自动补0)[M01]:强制两位格式的月(不足两位自动补0)[Y0001]:四位完整格式的年
这样就能直接输出你想要的DD-MM-YYYY格式啦~
内容的提问来源于stack exchange,提问作者Name
相关产品推荐
相关产品推荐

