Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT中的昨天日期_Xslt_Date_Xslt 1.0 - Fatal编程技术网

XSLT中的昨天日期

XSLT中的昨天日期,xslt,date,xslt-1.0,Xslt,Date,Xslt 1.0,如何在xslt中找到昨天的日期?我想先得到今天的日期,然后减去一天,但我不知道如何在不破坏日历的情况下做到这一点。在XSLT2.0中,可以使用current-dateTime()方法来获得当前日期。但是如果您使用的是XSLT 1.0,则需要使用扩展函数,因为XSLT 1.0不提供任何获取当前日期/时间的标准。 您可以在XSLT 1.0 <ms:script language="javascript" implements-prefix="user"> function dat

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

XSLT2.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>

函数datediff(date1,date2)
{
返回整数(((新日期(日期2))-(新日期(日期1))/1000/60);
}

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>

函数datediff(date1,date2)
{
返回整数(((新日期(日期2))-(新日期(日期1))/1000/60);
}

您最好的选择可能是使用您的母语编程语言编写扩展,并使用您的母语的datemath库。您可以在


本例使用Java,但我在.NET中已经使用了很多这方面的内容。您最好使用本机编程语言编写扩展,并使用本机语言的datemath库。您可以在

这个示例使用Java,但我在.NET中已经使用了很多,另一个选项是使用的扩展名来表示日期函数:

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

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

)更具可移植性。另一个选项是对日期函数使用的扩展:

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


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

等)更具可移植性。我必须在只有XSLT 1.0可用的情况下获得以前的工作日期。因此,我提出了一个转换,可以做到这一点。您可以在Github上检查它:

其背后的逻辑是将日期分为3个部分,并分别对它们进行操作,同时保持相关性并处理零。
因此,我首先从天减去1,然后,如果我得到0,则从月减去1,同时将天还原为其最大值(31)。分别对月和年执行相同的操作。对于天,有额外的逻辑依赖于月(对于二月和年),因为一个月的最后一天可能是28、29、30或31。

我必须在只有XSLT 1.0可用的情况下获得上一个工作日期。因此,我提出了一个转换,可以做到这一点。您可以在Github上查看:

其背后的逻辑是将日期分为3个部分,并分别对它们进行操作,同时保持相关性并处理零。
因此,我首先从天减去1,然后,如果我得到0,则从月减去1,同时将天还原为其最大值(31)。分别对月和年执行相同的操作。对于天,有额外的逻辑依赖于月(对于二月和年),因为一个月的最后一天可能是28、29、30或31。

您使用的是什么版本的xslt?您使用的是什么版本的xslt?这是假设我们使用的是MSXML。Saxon有一个类似的扩展,
,但我不确定它是否可以处理javascript。这是假设我们使用的是MSXML。Saxon有一个类似的扩展,
,但我不确定如果它能处理javascript。