Subject: Re: [xsl] Comparing two dates when one is potentially malformed From: "Bridger Dyson-Smith bdysonsmith@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 5 Dec 2016 16:11:38 -0000 |
Hi Wolfgang - On Mon, Dec 5, 2016 at 3:18 AM, Wolfgang Laun wolfgang.laun@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > If all the "malformed forms" are due to omitted seconds and if it is only > the date you are interested in, truncate values at the separator 'T' and > compare the date. Even a string comparison would work on the yyyy-mm-dd > formatted values. Or truncate at the length that includes hh:mm and > compare. > > Thanks for the response! After getting a better handle on requirements, it sounds like I don't need to worry about the time values, so this is the approach I'll use. > -W > > Cheers, Bridger > On 5 December 2016 at 05:03, Bridger Dyson-Smith bdysonsmith@xxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > >> Hi all -- >> >> I'm wondering about best practices when dealing with potentially >> malformed dates. I confess that I haven't worked with dates (xs:date, >> xs:time, xs:dateTime) very much and so I'm not sure if I'm thinking about >> things correctly. >> >> I have the following input: >> <test> >> <field name="publication_date" type="date"> >> <value>2011-12-01T00:00-08:00</value> >> </field> >> <field name="embargo_date" type="date"> >> <value>2011-12-01T00:00-08:00</value> >> </field> >> <submission-date>2011-11-17T08:11:17-08:00</submission-date> >> <publication-date>2011-12-01T00:00-08:00</publication-date> >> </test> >> >> And I'd like to do a comparison check on the field[@name='embargo_date'] >> vs the output of current-dateTime(). I have the following stylesheet: >> >> <?xml version="1.0" encoding="UTF-8"?> >> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> xmlns:xs="http://www.w3.org/2001/XMLSchema" >> exclude-result-prefixes="xs" >> version="2.0"> >> >> <xsl:output encoding="UTF-8" indent="yes" method="xml"/> >> >> >> <xsl:variable name="c-dateTime" >> select="dateTime(xs:date(format-date(current-date(), >> '[Y]-[M,2]-[D,2]')), >> xs:time(format-time(current-time(), >> '[H]:[m]:[s][Z]')))"/> >> >> <xsl:template match="/"> >> <xsl:variable name="test-dateTime" as="xs:dateTime" >> select="test/field[@name='embargo_date']/value"/> >> >> <result><xsl:value-of select="if ($test-dateTime ge $c-dateTime ) >> then 'embargo me!' else 'all clear!'"/></result> >> </xsl:template> >> </xsl:stylesheet> >> >> I'm using Saxon HE-9.6.0.7 in oXygen 18.1, which gives me a compile time >> error of "FORG0001: Invalid dateTime value "2018-12-01T00:00-08:00" (Wrong >> delimiter after minute)". >> >> Is the right thing to do here to do some string parsing on the substrings >> in the values that I need to check? Is there some other way to convert the >> value in field[@name='embargo_date'] into an xs:dateTime? >> >> Thanks for your time and trouble. >> Best, >> Bridger >> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> >> EasyUnsubscribe <http://-list/528976> (by email) >> > > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <-list/1230532> (by > email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Comparing two dates when , Wolfgang Laun wolfga | Thread | Re: *****SPAM***** [xsl] Comparing , Christophe Marchand |
Re: *****SPAM***** [xsl] Comparing , Christophe Marchand | Date | [xsl] [ANN] XML Prague 2017 - Call , Jirka Kosek jirka@xx |
Month |