我的xml中有以下字符串:
<birthday>1968-05-30 23:00:00.0 UTC</birthday>
我需要将其转换为日期(CET)。所以基本上我想以某种方式解析这个String到一个日期时间,加1小时,然后检索日期。
但我已经失败了只是将其解析为日期:
xs:date(fn:substring(birthday,1,10))
失败并显示错误
FORG0001:日期无效&#34;&#34; (太短)
但是xs:date('1968-05-30')
工作正常。
尝试使用xs:time(fn:substring(birthday,12,8))
检索时间时出现类似错误。
我做错了什么?
(使用Saxon 9)
答案 0 :(得分:0)
尝试:
<xsl:value-of select="xs:date(xs:dateTime(translate(substring(birthday, 1, 19), ' ', 'T')) + xs:dayTimeDuration('PT1H'))"/>
答案 1 :(得分:0)
感谢您的评论。
问题解决了......相当令人尴尬,但我收到了错误,因为在我的输入XML中我没有注意到我有没有生日的伙伴节点(公司的情况 - 这是也被建模为合作伙伴)。 因此错误正确地说&#34;无效日期&#34;&#34; (太短)&#34;。它只是没有确切地说:/
经验教训:在将String转换为Date之前,请验证String不为空且不为null;)