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

如何在XSLT中对当前日期时间减一月并格式化为mmm-YY?

解决XSLT中获取上月(mmm-yy格式)的问题

你之前的写法错误在于对格式化后的字符串做时长减法——字符串无法和xsd:dayTimeDuration类型进行运算,必须先对日期时间对象做减法,再格式化。

正确的实现逻辑是:先计算出上月的日期时间,再对这个结果进行格式化。完整代码如下:

xp20:format-dateTime(fn:current-dateTime() - xsd:dayTimeDuration('P1M'), "[Mn,*-3]-[Y01]")

关键解释:

  • fn:current-dateTime()返回原生的xs:dateTime类型值,能直接和xsd:dayTimeDuration('P1M')(代表1个月时长)做减法,得到上月的对应时间点
  • 把运算后的日期时间对象传入xp20:format-dateTime,用[Mn,*-3]生成3字母月份缩写,[Y01]生成年份后两位,最终得到mmm-yy格式的结果

边界情况说明:

如果当前是1月(比如2025-01-20),减去1个月会自动处理为上一年的12月(2024-12-20),格式化后输出Dec-24,无需额外处理跨年度的逻辑。

内容的提问来源于stack exchange,提问作者joelouis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:20:40