У меня есть сохраненное значение времени в формате H:mm:ss
. Часы могут иметь любое значение от 0 до нескольких дней. Эти данные отправляются в теге XML и обрабатываются XSL для отображения. Дисплей, который я хочу, имеет формат:
D days, HH:mm:ss (hours/minutes)
Где последний тег показывает часы, если ЧЧ больше 0, минуты, если он равен 0.
Учитывая исходное значение HH, которое может быть больше 24, я знаю, что мне нужно слово HH / 24, чтобы получить значение дней. Тогда исходный HH% 24 дает мне оставшиеся часы.
Я также обработал вопрос о минутах и часах, используя xsl:when
и xsl:if
.
Это получает дни и часы из значения часов, которое поставило меня в тупик.
EDIT
Пока я смотрю на следующие действия:
Объявление переменной
<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 часов.