在 Xslt 1.0 中向日期时间添加 3 小时
Add 3 hours to Datetime in Xslt 1.0
我有一个值 <delivery-at>31-Oct-2020 01:03 PM</delivery-at>
,而不是确切时间需要三个小时的时间 window。例如,需要在 xslt
中将值显示为 "31-Oct-2020 01:00 PM - 31-Oct-2020 04:00 PM"
我可以使用以下方法做到这一点
<xsl:template name= "get-expected-eta">
<xsl:variable name= "etadatetime" select= "delivery-at" />
<xsl:if test = "$etadatetime != '' ">
<xsl:variable name= "etadate" select= "substring($etadatetime, 1, 12)" />
<xsl:variable name= "etatime" select= "substring($etadatetime, 13, 15)" />
<xsl:variable name= "etahour" select= "substring($etatime, 1, 2)" />
<xsl:variable name= "etatimecomponent" select= "substring($etatime, 7, 8)" />
<xsl:variable name= "begin-time">
<xsl:choose>
<xsl:when test= "$etatimecomponent='AM'">
<xsl:choose>
<xsl:when test= "$etahour = 12">
<xsl:value-of select= "00"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$etahour"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test= "$etahour = 12">
<xsl:value-of select= "$etahour"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$etahour + 12"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "end-time" >
<xsl:choose>
<xsl:when test= "$begin-time + 3 >= 24">
<xsl:value-of select= "($begin-time + 3) - 24"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$begin-time + 3"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "from-time" select = "concat($etahour, ' ',$etatimecomponent)"/>
<xsl:variable name= "to-time">
<xsl:choose>
<xsl:when test= "number($end-time) >= 12">
<xsl:choose>
<xsl:when test= "$end-time = 12">
<xsl:value-of select= "12"/> PM
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$end-time - 12"/> PM
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test= "$end-time = 0">
<xsl:value-of select= "12"/> AM
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$end-time"/> AM
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Expected ETA -->
<xsl:value-of select = '$etadate'/>(<xsl:value-of select = '$from-time'/> - <xsl:value-of select = '$to-time'/>)
</xsl:if>
</xsl:template>
我有一个值 <delivery-at>31-Oct-2020 01:03 PM</delivery-at>
,而不是确切时间需要三个小时的时间 window。例如,需要在 xslt
"31-Oct-2020 01:00 PM - 31-Oct-2020 04:00 PM"
我可以使用以下方法做到这一点
<xsl:template name= "get-expected-eta">
<xsl:variable name= "etadatetime" select= "delivery-at" />
<xsl:if test = "$etadatetime != '' ">
<xsl:variable name= "etadate" select= "substring($etadatetime, 1, 12)" />
<xsl:variable name= "etatime" select= "substring($etadatetime, 13, 15)" />
<xsl:variable name= "etahour" select= "substring($etatime, 1, 2)" />
<xsl:variable name= "etatimecomponent" select= "substring($etatime, 7, 8)" />
<xsl:variable name= "begin-time">
<xsl:choose>
<xsl:when test= "$etatimecomponent='AM'">
<xsl:choose>
<xsl:when test= "$etahour = 12">
<xsl:value-of select= "00"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$etahour"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test= "$etahour = 12">
<xsl:value-of select= "$etahour"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$etahour + 12"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "end-time" >
<xsl:choose>
<xsl:when test= "$begin-time + 3 >= 24">
<xsl:value-of select= "($begin-time + 3) - 24"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$begin-time + 3"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name= "from-time" select = "concat($etahour, ' ',$etatimecomponent)"/>
<xsl:variable name= "to-time">
<xsl:choose>
<xsl:when test= "number($end-time) >= 12">
<xsl:choose>
<xsl:when test= "$end-time = 12">
<xsl:value-of select= "12"/> PM
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$end-time - 12"/> PM
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test= "$end-time = 0">
<xsl:value-of select= "12"/> AM
</xsl:when>
<xsl:otherwise>
<xsl:value-of select= "$end-time"/> AM
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Expected ETA -->
<xsl:value-of select = '$etadate'/>(<xsl:value-of select = '$from-time'/> - <xsl:value-of select = '$to-time'/>)
</xsl:if>
</xsl:template>