GithubHelp home page GithubHelp logo

Parse error on trailing zeros about edtf.js HOT 9 CLOSED

mielvds avatar mielvds commented on June 25, 2024
Parse error on trailing zeros

from edtf.js.

Comments (9)

inukshuk avatar inukshuk commented on June 25, 2024 1

OK 4.6.0 should accept any number of decimal fractions, but only up to three will be used.

from edtf.js.

inukshuk avatar inukshuk commented on June 25, 2024

I don't have the ISO 8601 standard by hand, but I've only ever seen strings with three-digit milliseconds. The parser is supposed to accept only valid ISO date strings so I think that throwing an error in the example above is the expected result. The JS Date constructor allows some non-ISO formats which this parser has to reject.

from edtf.js.

inukshuk avatar inukshuk commented on June 25, 2024

Experimenting with this a little bit: (new Date('2024-01-10T14:17:32.1234Z')).toISOString() gives '2024-01-10T14:17:32.123Z' so the JS implementation also rounds the ISO format to three digits. .getMilliseconds() also is 123 so it's not only that the ISO format drops the number but that the parser ignores it silently.

from edtf.js.

mielvds avatar mielvds commented on June 25, 2024

Yep, you're absolutely right! I guess you could consider adding a 'non-strict' mode, but I would also understand if you wouldn't ;)

from edtf.js.

inukshuk avatar inukshuk commented on June 25, 2024

Right, we sort of hijacked the extension levels for this already. There is a level 3 (the standard only goes to level 2) where we added some extra features. We could make the parser accept more sub-second precision there. However, even if the parser accepted the extra precision the rest of the API is built on top of the standard Date object for storage which doesn't store the extra digits. That is, if you used anything but zeroes that information would be parsed and lost. Therefore, to support this properly I think we'd have to store the milliseconds separately, which I think we should only do if there's a strong reason for it.

Where do you get these date strings from?

from edtf.js.

mielvds avatar mielvds commented on June 25, 2024

Where do you get these date strings from?

A Media Asset Management system that does not take standards compliance seriously, as there are many unfortunately. However, we also get a lot of xsd:dateTime and its unclear whether the XSD spec disallows this.

This is from the ISO 8601:2004 spec btw (I don't have access, but I got it from https://stackoverflow.com/questions/25842840/representing-fraction-of-second-with-iso-86012004):

4.2.2.4 Representations with decimal fraction

The interchange parties, dependent upon the application, shall agree the number of digits in the decimal fraction. The format shall be [hhmmss,ss], [hhmm,mm] or [hh,hh] as appropriate (hour minute second, hour minute, and hour, respectively), with as many digits as necessary following the decimal sign. A decimal fraction shall have at least one digit.

So the three digit limit might be a convention rather than a rule

from edtf.js.

inukshuk avatar inukshuk commented on June 25, 2024

OK in that case we can probably amend the grammar without doing any harm.

from edtf.js.

inukshuk avatar inukshuk commented on June 25, 2024

Though, as I said the underlying JS Date will likely just drop any extra digits there.

from edtf.js.

mielvds avatar mielvds commented on June 25, 2024

sure, but then at least they can be parsed. Thanks!

from edtf.js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.