1

如何在 xslt 中找到昨天的日期?我正在考虑获取今天的日期,然后减去一天,但我不知道如何在不破坏日历的情况下做到这一点。

4

4 回答 4

2

XSLT 2.0您可以使用current-dateTime()方法获取当前日期。但是如果您使用XSLT 1.0,则需要使用扩展函数,因为 XSLT 1.0 没有提供任何标准来获取当前日期/时间。您可以使用以下脚本XSLT 1.0

<ms:script language="javascript" implements-prefix="user">
    function datediff(date1, date2)
    {
        return Math.round(((new Date(date2)) - (new Date(date1))/1000/60);
    }
</ms:script>
于 2012-09-06T17:21:28.257 回答
1

另一种选择是使用EXSLT的日期函数扩展:

date:add(date:date(), '-P1D')

date:date()检索当前日期,并date:add()为其添加持续时间。“-P1D”表示-1天的持续时间。

请注意,这些扩展函数不在 XSLT 标准中,但可以找到实现,具体取决于您使用的 XSLT 处理器。EXSLT 函数应该比特定于处理器的函数(如<ms:*>.

于 2012-09-06T19:01:01.367 回答
1

可能你最好的选择是用你的母语编程语言编写一个扩展,并使用你的母语的 datemath 库。您可以在http://www.ibm.com/developerworks/library/x-callbk/index.html阅读更多关于它的基础知识

此示例使用 Java,但我在 .NET 中使用过很多

于 2012-09-06T17:22:36.793 回答
0

我必须在只有 XSLT 1.0 可供我使用的情况下获得以前的工作日期。结果,我想出了一个转换,可以做到这一点。你可以在 Github 上查看:https ://github.com/Simbiat/xslt1_previous_day

其背后的逻辑将日期拆分为 3 个组件并分别操作它们,同时保持依赖关系并处理零。所以,我首先从天中减去 1,然后,如果我得到 0 - 从月份中减去它,同时将天恢复为最大值(31)。分别对月份和年份执行相同的操作。对于日期,还有取决于月份(以及二月份的年份)的附加逻辑,因为月份的最后一天可以是 28、29、30 或 31。

于 2019-08-31T07:05:45.943 回答