2015-05-20 68 views
0

是否有一個簡單的方法來一個RSS pubdate的如何將pubDate格式化爲HH:MM AM/PM?

<pubDate>Thu, 28 May 2015 08:00:00 -0400</pubDate> 

格式化爲:

8:00AM 

我不是那麼熟悉的日期格式,我不能爲我的回憶生活那個時間格式是什麼,所以Google不會幫助我。

回答

0

一般日期解析相當複雜。有一些討論將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')"/> 

錯誤管理尚未添加,您可以添加一些,具體取決於您的輸入有多好,同質性。

+0

我相信正確的結果爲'12輸入:00:00'是'12:00 PM',不'0: 00 PM'。同樣,'00:00:00'應該產生'12:00 AM',而不是'0:00 AM'。 –

+0

也許吧。我不知道要求。但是這個想法在那裏,直到JesseEarley去適應它的需求。 –

+0

http://en.wikipedia.org/wiki/12-hour_clock –

1

試試這樣說:

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> 
+0

這工作得很好!謝謝! – JesseEarley

+0

@JesseEarley如果您的問題得到解答,請通過接受答案關閉它。 –

相關問題