2010-05-03 21 views
0

我有一個格式爲H:mm:ss的存儲時間值。時間可以是從0到幾天的任何值。這些數據以XML標籤發送並由XSL處理以顯示。我想顯示的格式爲:在XSL中處理一個字符串中的整數

D days, HH:mm:ss (hours/minutes)

其中最後一個標籤顯示時間,如果HH大於0,如果分鐘爲0。

鑑於原HH,這可能是超過24,我知道我需要HH/24的地板才能獲得天價值。然後原來的HH%24給了我剩餘的時間。

我也使用xsl:whenxsl:if處理了分鐘和小時問題。

從我被難倒的時間價值中獲得數天和數小時。

編輯 到目前爲止,我期待在執行下列操作:

變量聲明

<xsl:variable name="time"><xsl:value-of select="time" /><xsl:variable> 
<xsl:variable name="days"><xsl:value-of select="floor(substring-before(time, ':')/24)" /></xsl:variable> 
<xsl:variable name="hours"><xsl:value-of select="substring-before(time, ':') mod 24" /></xsl:variable> 
<xsl:variable name="minutes"><xsl:value-of select="substring-after(time, ':')" /></xsl:variable> 

使用

<xsl:if test="$days > 0"> 
    <xsl:value-of select="$days" /> days 
</xsl:if> 
<xsl:value-of select="$hours" />:<xsl:value-of select="$minutes" /> 

<xsl:choose> 
    <xsl:when test="$hours > 0"> 
     hour<xsl:if test="$hours > 1">s</xsl:if> 
    </xsl:when> 
    <xsl:otherwise> 
     minute<xsl:if test="$minute != '01:00'">s</xsl:if> 
    </xsl:otherwise> 
</xsl:choose> 

而且澄清,採樣時間會<time>26:15:00</time> 1天2點15分。

+0

什麼是實際問題?你有一段代碼描述了你目前正在做的事情嗎? – IAbstract 2010-05-03 17:11:50

+0

@ dboarman-FissureStudios - 我已經更新了一段代碼,希望能更清楚地說明我的問題。我需要做的是弄清楚如何在幾小時,幾分鐘和幾秒鐘內獲得格式化的日子,並將其操作爲一個漂亮的字符串。 – justkt 2010-05-03 17:19:02

回答

0

這裏是我需要做的修改,使我的原始嘗試工作。我需要記住我的美元符號的變量。我需要使用div而不是/。最重要的是,我需要表達式number來爲子字符串建立一個數字。這是我想出來的。不過,我歡迎評論能改善我的XSLT!

<xsl:variable name="time"><xsl:value-of select="time" /><xsl:variable> 
<xsl:variable name="totalHours><xsl:value-of select="number(substring-before($time, ':'))" /></xsl:variable> 
<xsl:variable name="days"><xsl:value-of select="floor($totalHours div 24)" /></xsl:variable> 
<xsl:variable name="hours"><xsl:value-of select="$totalHours mod 24" /></xsl:variable> 
<xsl:variable name="minutes"><xsl:value-of select="substring-after(time, ':')" /></xsl:variable> 
相關問題