XSLT xp20日期时间解析:如何将mm/dd/yyyy转为yyyy-mm-dd格式
问题原因
你当前使用xp20:format-dateTime没有得到预期结果,核心原因是<date>节点内存储的是MM/DD/YYYY格式的普通字符串,不属于XPath 2.0+ 规范的dateTime/date类型,格式转换函数无法直接识别非标准结构的日期字符串。
解决方案
方案1:先解析标准日期再格式化(XSLT 2.0及以上版本适用)
先用parse-date指定输入字符串的格式解析为标准日期类型,再调用格式化函数输出目标格式:
xp20:format-date(xp20:parse-date(/Input/date, '[M01]/[D01]/[Y0001]'), '[Y0001]-[M01]-[D01]')
注意输入的日期仅包含年月日,无需使用format-dateTime,调用format-date即可。
方案2:字符串直接拼接(全版本兼容,无函数依赖)
如果你的输入格式固定为MM/DD/YYYY,可以直接截取对应位置的字符串拼接,适配所有XSLT版本,无需依赖扩展函数:
concat( substring(/Input/date, 7, 4), '-', substring(/Input/date, 1, 2), '-', substring(/Input/date, 4, 2) )
内容的提问来源于stack exchange,提问作者sivakumar kala
相关产品推荐
相关产品推荐

