是否有一個簡單的方法來一個RSS pubdate的如何將pubDate格式化爲HH:MM AM/PM?
<pubDate>Thu, 28 May 2015 08:00:00 -0400</pubDate>
格式化爲:
8:00AM
我不是那麼熟悉的日期格式,我不能爲我的回憶生活那個時間格式是什麼,所以Google不會幫助我。
是否有一個簡單的方法來一個RSS pubdate的如何將pubDate格式化爲HH:MM AM/PM?
<pubDate>Thu, 28 May 2015 08:00:00 -0400</pubDate>
格式化爲:
8:00AM
我不是那麼熟悉的日期格式,我不能爲我的回憶生活那個時間格式是什麼,所以Google不會幫助我。
一般日期解析相當複雜。有一些討論將fn:format-date()的相反部分添加到標準XPath庫3.0中,但由於通用情況下任務的複雜性而未成功。
恐怕你只能在這裏進行字符串操作,這在你的情況下並不算太壞。例如:
<xsl:variable name="hours" select="xs:integer(substring($input, 18, 2))"/>
<xsl:variable name="minutes" select="substring($input, 21, 2)"/>
<xsl:sequence select="
if ($hours ge 12) then
concat($hours - 12, ':', $minutes, 'PM')
else
concat($hours, ':', $minutes, 'AM')"/>
錯誤管理尚未添加,您可以添加一些,具體取決於您的輸入有多好,同質性。
試試這樣說:
XSLT 1.0
<xsl:template match="pubDate">
<xsl:variable name="h" select="substring(., 18, 2)"/>
<xsl:variable name="m" select="substring(., 21, 2)"/>
<xsl:variable name="h12" select="($h + 11) mod 12 + 1"/>
<xsl:variable name="am.pm" select="substring('AMPM', 1 + 2*(number($h) > 11), 2)"/>
<xsl:value-of select="concat($h12, ':', $m, $am.pm)"/>
</xsl:template>
這工作得很好!謝謝! – JesseEarley
@JesseEarley如果您的問題得到解答,請通過接受答案關閉它。 –
我相信正確的結果爲'12輸入:00:00'是'12:00 PM',不'0: 00 PM'。同樣,'00:00:00'應該產生'12:00 AM',而不是'0:00 AM'。 –
也許吧。我不知道要求。但是這個想法在那裏,直到JesseEarley去適應它的需求。 –
http://en.wikipedia.org/wiki/12-hour_clock –