ฉันมีค่าเวลาที่เก็บไว้ซึ่งอยู่ในรูปแบบ H:mm:ss
ชั่วโมงอาจเป็นค่าใดก็ได้ตั้งแต่ 0 ไปจนถึงหลายวัน ข้อมูลนี้ถูกส่งในแท็ก XML และประมวลผลโดย XSL ที่จะแสดง จอแสดงผลที่ฉันต้องการมีรูปแบบ:
D days, HH:mm:ss (hours/minutes)
โดยที่แท็กสุดท้ายจะแสดงชั่วโมงหาก HH มากกว่า 0 นาทีหากเป็น 0
เมื่อพิจารณาจาก HH ดั้งเดิมซึ่งอาจมากกว่า 24 ฉันรู้ว่าฉันต้องการพื้น HH / 24 เพื่อให้ได้ค่าวัน จากนั้น HH % 24 ดั้งเดิมจะให้ชั่วโมงที่เหลือแก่ฉัน
ฉันยังจัดการกับคำถามแบบนาทีและชั่วโมงโดยใช้ xsl:when
และ xsl: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 ชั่วโมง