【问题标题】:Convert dd/mm/yy to dd-MM-YYYY format in xsl在 xsl 中将 dd/mm/yy 转换为 dd-MM-YYYY 格式
【发布时间】:2013-07-16 17:10:47
【问题描述】:

提前感谢您的支持。

我的日期格式为dd/MMM/YY,需要使用XSL 转换为另一种格式dd-MM-YYYY

这里的问题是,年是短格式需要转换成长格式。如何确定年份?

这里有几个例子,

dd/MMM/YY - dd-MM-YYYY

01/FEB/91 - 01-02-1991.

13/APR/13 - 13-04-2013.

使用字符串操作,XSL 可以转换为长格式,但无法确定实际年份。

例如

01/FEB/91 可以使用字符串函数转换为01-02-199101-02-2091

那么,如何使用XSL 1.0 or XSL 2.0 获取实际日期?

【问题讨论】:

  • 我刚刚编辑了我的问题。请查看。
  • 如何获取“实际日期”?只是在一年前连接“20”,因为你不能回到过去......
  • 我所拥有的所有输入数据都与出生日期有关。
  • 抱歉我的错误('actual' != 'actuel' = 'current' in 法语)

标签: xslt xslt-1.0 xslt-2.0 date-formatting


【解决方案1】:

你需要考虑你在问什么。 XSLT 无法知道 01/FEB/91 是指 01-02-1991 还是 01-02-2091 还是 01-02-1891。您需要确定截止年份在哪里。

你可以在 2013 年截止,然后这样做:

<xsl:variable name="longYear"
              select="$shortYear + 2000 - (100 * ($shortYear > 13))" />

这将导致小于或等于 13 的年份为 20XX,大于 13 的年份为 19XX。

在自己的模板中:

<xsl:template name="LongYear">
  <xsl:param name="shortYear" select="." />
  <xsl:param name="cutoff" select="13" />

  <xsl:value-of select="$shortYear + 2000 - (100 * ($shortYear > $cutoff))" />
</xsl:template>

你可以调用:

<xsl:call-template name="LongYear">
  <xsl:with-param name="shortYear" select="substring(Date, 8, 2)" />
</xsl:call-template>

【讨论】:

  • 我在看什么,是否有任何内置函数/模式可以按照您的建议进行操作。
  • 似乎没有,但应该很容易将其放入自己的模板中并使其可重用。在 XSLT 2.0 中,您还可以定义一个执行此操作的函数,以便您可以内联使用它。
  • 为了更通用,我更改了一些代码,
【解决方案2】:

您可以在 xslt 中使用自定义的 java 函数,因为这种日期转换在 Java 中也是可能的。

【讨论】:

  • 不,您不能“在 xslt 中使用自定义的 java 函数”。您只能在那些允许您将它们用作其扩展机制的一部分的 XSLT 处理器中使用 Java 函数。
猜你喜欢
  • 2022-01-25
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多