Xml 如何在XSLT2.0中减去1天(计算前一天)?

Xml 如何在XSLT2.0中减去1天(计算前一天)?,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,有人能用XSLT 2.0帮助计算一天前从给定日期的xsd:dateTime类型吗 样本输入: <?xml version="1.0" encoding="UTF-8"?> <objects> <LastRunTime__c> <Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c> </LastRunTime__c> </objects> <

有人能用XSLT 2.0帮助计算一天前从给定日期的
xsd:dateTime
类型吗

样本输入:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-28T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<xsl:template match="/">
<xsl:variable name="vToday" select="/*:objects/*:LastRunTime__c/*:Last_Run_Time__c"/>
Today is: <xsl:sequence select="$vToday"/>
1 day ago it was: <xsl:sequence select="$vToday -1*xs:dayTimeDuration('P1D')"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:variable name="vToday" select="/objects/LastRunTime__c/Last_Run_Time__c" 
                  as="xsd:dateTime"/>
    Today is: <xsl:value-of select="$vToday"/>
    1 day ago it was: <xsl:value-of select="$vToday - xsd:dayTimeDuration('P1D')"/>
  </xsl:template>
</xsl:stylesheet>

2015-01-29T19:55:15.846Z
样本输出:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-28T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<xsl:template match="/">
<xsl:variable name="vToday" select="/*:objects/*:LastRunTime__c/*:Last_Run_Time__c"/>
Today is: <xsl:sequence select="$vToday"/>
1 day ago it was: <xsl:sequence select="$vToday -1*xs:dayTimeDuration('P1D')"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:variable name="vToday" select="/objects/LastRunTime__c/Last_Run_Time__c" 
                  as="xsd:dateTime"/>
    Today is: <xsl:value-of select="$vToday"/>
    1 day ago it was: <xsl:value-of select="$vToday - xsd:dayTimeDuration('P1D')"/>
  </xsl:template>
</xsl:stylesheet>

2015-01-28819:55:15.846Z
我尝试了几件事,但没能得到我想要的:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-28T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<xsl:template match="/">
<xsl:variable name="vToday" select="/*:objects/*:LastRunTime__c/*:Last_Run_Time__c"/>
Today is: <xsl:sequence select="$vToday"/>
1 day ago it was: <xsl:sequence select="$vToday -1*xs:dayTimeDuration('P1D')"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:variable name="vToday" select="/objects/LastRunTime__c/Last_Run_Time__c" 
                  as="xsd:dateTime"/>
    Today is: <xsl:value-of select="$vToday"/>
    1 day ago it was: <xsl:value-of select="$vToday - xsd:dayTimeDuration('P1D')"/>
  </xsl:template>
</xsl:stylesheet>

今天是:
1天前是:

给定您的输入XML,此XSLT转换:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-28T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>
<xsl:template match="/">
<xsl:variable name="vToday" select="/*:objects/*:LastRunTime__c/*:Last_Run_Time__c"/>
Today is: <xsl:sequence select="$vToday"/>
1 day ago it was: <xsl:sequence select="$vToday -1*xs:dayTimeDuration('P1D')"/>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:variable name="vToday" select="/objects/LastRunTime__c/Last_Run_Time__c" 
                  as="xsd:dateTime"/>
    Today is: <xsl:value-of select="$vToday"/>
    1 day ago it was: <xsl:value-of select="$vToday - xsd:dayTimeDuration('P1D')"/>
  </xsl:template>
</xsl:stylesheet>

我猜这和日期格式有关。你有没有试过比你更好的
2015-01-28
2015-01-28-19:55
!这很有帮助。