我的输入日期格式为' 2014-04-14T00:00:00-05:00'并希望转换为格式' 2014-04-14T00:00:00.5Z' (即,yyyy-MM-dd' HH:mm:ss.S' Z')。
我可以使用SimpleDateFormat类在java中执行此操作,但我需要使用XSLT2.0执行相同操作。
已尝试的选项:format-dateTime($ dt,&#39; [Y0001] - [M01] - [D01] T [H01]:[m01]:[s01]。[f001] Z&#39;)< / p>
但是这个选项结果是&#39; 2014-04-14T00:00:00.000Z&#39;本应该是2014-04-14T00:00:00.5Z&#39; (预期产出)。
感谢任何帮助。谢谢!
答案 0 :(得分:2)
你给出的日期没有小数秒(这是[f001]在你的函数中寻找的)。它的时区为-05:00(东部标准时间)。请在此处查看xs:dateTime的说明:http://www.w3.org/TR/xmlschema-2/#dateTime
ETA:我不认为你想要的格式只能使用XSL日期格式函数,因为你在时区偏移之前丢失了正/负。这样的事情会让你更接近:
<xsl:value-of select="format-dateTime($dt, '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].[z]Z')"/>
返回: 2014-04-14T00:00:00.GMT-5Z
您可以使用简单的字符串函数去掉'GMT-'。但是,如果您需要将此日期转换回另一种格式,您可能需要小心。
答案 1 :(得分:0)
您的目标格式
2014-04-14T00:00:00.5Z
(其中5Z代表时区-05:00)是完全非标准的,并且非常不受欢迎,因为它可能被误读为“午夜半秒,UTC”。所以生成它应该有点棘手并不奇怪。如果由于某种原因你被迫使用这种格式,那么你将不得不手动生成时区部分,你可以从timezone-from-dateTime($x) div xs:dayTimeDuration('PT1H')
开始。