将 ISO 日期格式转换为 XSLT 中的 RFC 2822 格式



我得到的日期时间为"2016-03-03T05:11:56"。 我想将其显示为 RFC 2822 日期格式(星期四,03 三月 2016 05:11:56 GMT)。如何在 XSLT 1.0 中实现这一点?任何帮助,不胜感激。谢谢大家

假设您的日期时间不包含时间偏移量或秒的小数部分,您可以使用以下内容:

<xsl:template name="dateTime-to-RFC-2822">
    <xsl:param name="dateTime"/>
    <!-- extract components -->
    <xsl:variable name="year" select="substring($dateTime, 1, 4)" />
    <xsl:variable name="month" select="substring($dateTime, 6, 2)" />
    <xsl:variable name="day" select="substring($dateTime, 9, 2)" />
    <!-- calculate day-of-week using Zeller's_congruence -->
    <xsl:variable name="a" select="$month &lt; 3"/>
    <xsl:variable name="m" select="$month + 12*$a"/>
    <xsl:variable name="y" select="$year - $a"/>
    <xsl:variable name="K" select="$y mod 100"/>
    <xsl:variable name="J" select="floor($y div 100)"/>
    <xsl:variable name="h" select="($day + floor(13*($m + 1) div 5) + $K + floor($K div 4) + floor($J div 4) + 5*$J + 6) mod 7"/>
    <!-- construct output -->
    <xsl:value-of select="substring('SunMonTueWedThuFriSat', 3 * $h + 1, 3)"/>
    <xsl:text>, </xsl:text>
    <xsl:value-of select="$day"/>
    <xsl:text> </xsl:text>
    <xsl:value-of select="substring('JanFebMarAprMayJunJulAugSepOctNovDec', 3 * ($month - 1) + 1, 3)"/>
    <xsl:text> </xsl:text>
    <xsl:value-of select="$year"/>
    <xsl:text> </xsl:text>
    <xsl:value-of select="substring-after($dateTime, 'T')" />
    <xsl:text> GMT</xsl:text>
</xsl:template> 

注意:我认为GMT后缀已经过时,您应该改用+0000

相关内容

  • 没有找到相关文章