gpt4 book ai didi

java - XML-XSLT : How to compare two dates which are in String

转载 作者:行者123 更新时间:2023-12-01 11:17:13 25 4
gpt4 key购买 nike

我知道这个问题可能会重复,而且我也浏览过类似的文章和问题,但我还没有找到确切的解决方案。

现在问题来了我正在使用 XSLTXPATH 来转换 xml。 XML 中有两个字符串变量。第一个是 OldDate,第二个是 CurrentDate

Ex : $oldDate = '29.05.2015 15:25:06'
$currentDate ='27.07.2015 14:28:02'.

现在我想比较这两个日期。

If  $oldDate > $currentDate  then 'OK' else 'Not Ok'.

由于我刚开始使用 XSLTXPATH,我不知道如何从其他文章中给出的答案中继续进行操作。

如果能为此提供一个完美的解决方案就太好了。

谢谢。

最佳答案

XSLT (2.0) 仅识别 YYYY-MM-DD 格式的日期,以及 YYYY-MM-DDThh:mm:ss 格式的日期时间。为了将字符串作为日期(或者在本例中为日期时间)进行比较,您必须首先将它们转换为有效的日期时间。由于您需要多次执行此操作,因此为此目的构造一个函数会很方便:

XSLT 2.0

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="http://www.example.com/my"
exclude-result-prefixes="xs my">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:variable name="oldDate" select="'29.05.2015 15:25:06'" />
<xsl:variable name="currentDate" select="'27.07.2015 14:28:02'" />

<xsl:function name="my:string-to-datetime">
<xsl:param name="string"/>
<xsl:variable name="parts" select="tokenize($string,'\.|\s')"/>
<xsl:sequence select="xs:dateTime(concat($parts[3], '-', $parts[2], '-', $parts[1], 'T', $parts[4]))" />
</xsl:function>

<xsl:template match="/">
<result>
<xsl:value-of select="if (my:string-to-datetime($oldDate) gt my:string-to-datetime($currentDate)) then 'OK' else 'Not Ok'" />
</result>
</xsl:template>

</xsl:stylesheet>

结果

<?xml version="1.0" encoding="utf-8"?>
<result>OK</result>

请注意,这假设您的字符串采用 DD.MM.YYYY hh:mm:ss 格式 - 即日期填充为两位数 - 否则还有更多工作要做。

关于java - XML-XSLT : How to compare two dates which are in String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com