XSLT 2.0+直接使用current-dateTime()等内置函数获取日期时间;XSLT 1.0需依赖扩展函数或外部传参。推荐优先采用XSLT 2.0方案,若受限于1.0则以外部传参最稳妥。

在XSLT中获取当前日期和时间,取决于你使用的XSLT版本:
XSLT 2.0 及以上(推荐)
直接使用内置函数 current-dateTime()、current-date() 或 current-time():
- current-dateTime() → 返回完整的日期时间,如 2024-06-15T14:23:08.123+08:00
- current-date() → 只返回日期部分,如 2024-06-15
- current-time() → 只返回时间部分,如 14:23:08.123+08:00
示例用法:
还可配合 format-dateTime() 自定义格式,比如:
输出类似:2024-06-15 14:23:08
XSLT 1.0(不支持原生时间函数)
标准 XSLT 1.0 没有内置日期函数,必须借助扩展函数,常见方案有:
- 使用处理器提供的扩展,例如 exsl:node-set() 不行,但 date:date-time()(需引入 EXSLT date 模块)
- 在支持的处理器中调用系统函数,如 saxon:current-dateTime()(Saxon)、msxsl:script(MSXML 中嵌入 JScript/VBScript)
- 最稳妥做法:由外部程序(如 Java、C#、Python)把当前时间作为参数传入 XSLT,再用 接收
例如,在 Java 中用 transformer.setParameter("now", new Date().toString());,XSLT 中写:
注意事项
- 函数返回值是 xdt:dateTime 类型(XSLT 2.0+),不是字符串,如需拼接或比较请确保类型一致
- 时区信息默认为运行环境的本地时区;如需 UTC,可用 adjust-dateTime-to-timezone(current-dateTime(), xs:dayTimeDuration('PT0S'))
- 不同 XSLT 处理器对扩展函数的支持程度不同,生产环境建议明确指定处理器并测试
基本上就这些。XSLT 2.0+ 直接用 current-dateTime() 最方便;若卡在 1.0,优先考虑传参方式,比依赖扩展更可控。










