XSLT中的昨天日期



如何在xslt中找到昨天的日期?我想得到今天的日期,然后减去一天,但我不知道如何在不打破日历的情况下做到这一点。

XSLT 2.0中,可以使用current-dateTime()方法获取当前日期。但是,如果使用XSLT 1.0,则需要使用扩展函数,因为XSLT1.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>

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

这个例子使用Java,但我在.NET 中使用了很多

另一个选项是使用EXSLT的日期函数扩展:

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

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

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

我不得不在只有XSLT1.0可用的情况下获得以前的工作日期。因此,我想出了一个转换,可以做到这一点。你可以在Github上查看:https://github.com/Simbiat/xslt1_previous_day

其背后的逻辑将日期划分为3个组件并分别操作,同时保持依赖性并处理零。所以,我先从一天减去1,然后,如果我得到0,从一个月减去它,同时将一天恢复到它的最大值(31)。月份和年份也是如此。由于月份的最后一天可以是28、29、30或31,因此对于天数,有额外的逻辑取决于月份(以及2月份的年份)。

相关内容

  • 没有找到相关文章

最新更新