2014-05-21 247 views
1

我的XML毫秒:当前时间的日期格式与使用XSLT 1.0版

<root> 
<Name>Test</Name> 
<DOB>10-11-1989</DOB> 
<root> 

我需要使用XSLT来获得当前的时间日期格式毫秒。 我正在使用XSLT版本-1.0。

改造中后,我的XML应该如下:

<root> 
<Name>Test</Name> 
<DOB>10-11-1989</DOB> 
<currentDate>2014-05-21-01.25.32.000000</currentDate> 
<root> 

我找到了版本2.0的解决方案,但是,这并不能帮助我。

回答

0

下面是一个使用Java的例子,它与Xalan一起使用,并且在ORACLE JRE中是默认可用的。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:java="http://xml.apache.org/xslt/java" 
    exclude-result-prefixes="java"> 

    <xsl:output indent="yes"/> 

    <xsl:strip-space elements="*"/> 

    <xsl:template match="/root"> 
     <xsl:copy> 
      <xsl:copy-of select="@*|node()"/> 
      <dateTimeStamp> 
       <xsl:value-of select="java:format(java:java.text.SimpleDateFormat.new('yyyy-MM-dd-HH.mm.ss.SSSSSS a'), java:java.util.Date.new())" /> 
      </dateTimeStamp> 
     </xsl:copy>   
    </xsl:template> 

</xsl:stylesheet> 

http://www.heber.it/?p=1053

如果你想拥有12小时的格式,只需更改

<xsl:value-of select="java:format(java:java.text.SimpleDateFormat.new('yyyy-MM-dd-HH.mm.ss.SSSSSS'), java:java.util.Date.new())" /> 

<xsl:value-of select="java:format(java:java.text.SimpleDateFormat.new('yyyy-MM-dd-hh.mm.ss.SSSSSS a'), java:java.util.Date.new())" /> 

它输出:

<root> 
    <Test>tested</Test> 
    <dateTimeStamp>2014-05-23-01.57.04.000441 PM</dateTimeStamp> 
</root> 
+0

乔尔,当我使用乌尔解决方案我不获得时间戳值。 测试 1989年10月11日

+0

我尝试了使用的Xalan 2.7.1和它的工作原理。见http://xsltransform.net/6qM2e2n –

+0

谢谢乔尔。它工作,但它显示24小时制。 2014-05-21-17.15.01.000605 如何获得12小时格式? 我会为此问题添加+1 –

1

XSLT 1.0本身并不提供任何方法来获取当前日期或时间。

如果你的处理器支持它,你可以使用date-time()EXSLT扩展函数 - 但是,我不认为这将包括毫秒。

或者,您可以在运行时将时间戳作为参数传递给样式表。