【问题标题】:Java Date Calculation Inside XSLXSL 中的 Java 日期计算
【发布时间】:2015-03-11 12:59:36
【问题描述】:

我一直在努力弄清楚如何使用 Java 和 XSLT 完成看似简单的日期计算,所以我放下了顽固的帽子,谦卑地问。我在 Java 和 XSL 方面没有太多经验,我正在研究它

到目前为止,我设法做的是获取当前日期(以 DDMMM 格式),就像这样......

<xsl:value-of select="java:format(java:text.SimpleDateFormat.new('ddMMM'),
 java:util.Date.new())"/>

现在,我真正需要做的是获取前几天的日期,即。今天 - 1

这使用xml version=1.0,我无法控制命名空间或样式表。这需要完全由 Java 引擎完成。

我已经搜索并找到了一些关于此的资源,但它们都不起作用,因为它们认为我有能力更改命名空间等。

对于上下文,我正在尝试在 SAS Digital Marketing Studio 中完成此操作

【问题讨论】:

  • 您需要告诉我们您使用的是哪种 XSLT 处理器。我怀疑 Xalan,但这只是一个猜测。如果您使用的是 Saxon,那么您当然可以免费获得所有 XSLT 2.0 日期/时间处理,而无需调用 Java。简单的日期算术就变成了一个微不足道的问题。
  • @MichaelKay OP 指定这需要完全由 Java 引擎完成(可能是但是或 w/e)。
  • @MichaelKay 该软件使用 Xalan,是的,我希望它是 XSLT2.0。会容易得多。
  • "这需要完全由 Java 引擎完成。" 为什么?并不是说使用 Java 有什么问题(鉴于 Xalan 支持它),但是您也可以在 XSLT 中执行此操作,并借助 EXSLT(Xalan 支持的部分)提供一些帮助。

标签: java xml xslt


【解决方案1】:

您可以将昨天的时间戳作为长参数传递给 Date 构造函数。

<xsl:variable name="currentTimeStamp" select="current-dateTime()-24*60*60*1000"/>
<xsl:value-of select="java:format(java:text.SimpleDateFormat.new('ddMMM'),
                      java:util.Date.new({$currentTimeStamp})"/>

【讨论】:

  • 感谢 Jean-François,这似乎是一个非常有前途的解决方案。但不幸的是,当我将参数传递给构造函数时,我根本没有得到任何输出。如果软件出现某种错误会很棒,但我只能看到它何时无法编译。在这种情况下,它没有。有没有其他方法可以做到这一点?
猜你喜欢
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 2016-12-08
  • 2010-10-13
  • 2021-07-15
  • 2014-06-17
  • 1970-01-01
相关资源
最近更新 更多