You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:25:05