xml - XSLT 中的秒数

标签 xml xslt datetime xslt-1.0 seconds

其实我不是在问问题。我注册了 stackoverflow,以回馈曾多次帮助过我的社区。

如果您使用的是 XSLT 1.0,则没有内置时间计算。我想出了这个将秒转换为分钟和小时。我希望这对某人有帮助!

<xsl:template name="format-duration">
  <xsl:param name="value" />

  <xsl:variable name="minutes" select="floor($value div 60) mod 60" />
  <xsl:variable name="seconds" select="$value mod 60" />
  <xsl:variable name="hours" select="floor($value div 3600)" />


  <xsl:if test="$hours">
    <xsl:if test="$hours &lt; 10">
      <xsl:text>0</xsl:text>
    </xsl:if>
    <xsl:value-of select="$hours" />

    <xsl:text>:</xsl:text>
  </xsl:if>


  <xsl:if test="$minutes">
    <xsl:if test="$minutes &lt; 10">
      <xsl:text>0</xsl:text>
    </xsl:if>
    <xsl:value-of select="$minutes" />
    <xsl:text></xsl:text>
  </xsl:if>

  <xsl:if test="$minutes and $seconds">
    <xsl:text>:</xsl:text>
  </xsl:if>

  <xsl:if test="$seconds">
    <xsl:value-of select="$seconds" />
    <xsl:text></xsl:text>
  </xsl:if>
</xsl:template>

EDIT: Do you have any other methods to achieve the same?

最佳答案

首先,感谢您的贡献。但是,此实现存在一些问题。秒输出不考虑前导 0,但即使它是固定的,如果任何数字恰好为 0,输出也可能不明确。例如,输入 3600560536300 都产生结果 10:05

同样,如果两个数字恰好为零。输入 36000 产生输出 10:,输入 60010 都产生结果 10

以下是我将如何实现此功能:

  <xsl:template name="format-duration">
    <xsl:param name="value" select="." />
    <xsl:param name="alwaysIncludeHours" select="false()" />
    <xsl:param name="includeSeconds" select="true()" />

    <xsl:if test="$value > 3600 or $alwaysIncludeHours">
      <xsl:value-of select="concat(format-number($value div 3600, '00'), ':')"/>
    </xsl:if>

    <xsl:value-of select="format-number(floor($value div 60) mod 60, '00')" />

    <xsl:if test="$includeSeconds">
      <xsl:value-of select="concat(':', format-number($value mod 60, '00'))" />
    </xsl:if>
  </xsl:template>

这样,只有当小时不为零或可选择打开时才会显示小时,默认情况下包括秒,但可以使用参数值选择性地省略。这应该减少关于时间应该代表什么的歧义。

如果要格式化的值是当前上下文节点,它还允许省略 value 参数。

关于xml - XSLT 中的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370152/

相关文章:

c# - 使用 xslt 从 rss 文件创建 html 列表

c# - 用英文月份填充组合框

Javascript 日期和 JSON 日期时间

date - 是否有日期/时间间隔格式的名称,例如“1h10m”

python - PyXB 将 anyAttribute 属性添加到生成的 Python 类

xslt - 使用 XSL 呈现整个网页的优点/缺点

java - 如何从 Android 中的应用程序访问我的相机

xslt - "context"关于调用模板参数的含义

Python minidom 从 XML 中提取文本

xml - XHTML 1.1 的 W3C XML 架构在哪里?