๐Ÿ“ฆ antongolub / iso8601

Strict ISO8601 datetime parser

โ˜… 0 stars โ‘‚ 0 forks ๐Ÿ‘ 0 watching โš–๏ธ MIT License
datetimeutil
๐Ÿ“ฅ Clone https://github.com/antongolub/iso8601.git
HTTPS git clone https://github.com/antongolub/iso8601.git
SSH git clone git@github.com:antongolub/iso8601.git
CLI gh repo clone antongolub/iso8601
Anton Golub Anton Golub docs: mention license a7f68c3 3 years ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ flow-typed
๐Ÿ“ src
๐Ÿ“ typings
๐Ÿ“„ .babelrc
๐Ÿ“„ .esdoc.json
๐Ÿ“„ .eslintrc
๐Ÿ“„ .flowconfig
๐Ÿ“„ .gitignore
๐Ÿ“„ .npmignore
๐Ÿ“„ .nycrc
๐Ÿ“„ .travis.yml
๐Ÿ“„ CHANGELOG.md
๐Ÿ“„ LICENSE
๐Ÿ“„ package.json
๐Ÿ“„ README.md
๐Ÿ“„ README.md

ISO 8601

Strict ISO8601 datetime parser

Build Status npm (tag) Maintainability Test Coverage js-standard-style

Yet another one date parser?

It's 20** and if you operate with dates, you should take one of these: But if you need only iso strings and bundle size matters, try out this lib.

Install

npm add @antongolub/iso8601
yarn add @antongolub/iso8601

Usage

import parser from '@antongolub/iso8601'

    const date1 = parser('2004002T10,26')  // YYYYWwwDThh,hh โ†’ new Date(2004, 0, 2, 10, 15, 36, 0)
    
    // 4.3.3 Representations other than complete
    // For reduced accuracy, decimal or expanded representations of date and time of day,
    // any of the representations in 4.1.2 (calendar dates), 4.1.3 (ordinal dates) 
    // or 4.1.4 (week dates) followed immediately by the time designator [T] 
    // may be combined with any of the representations in 4.2.2.2 through 4.2.2.4 (local time),
    // 4.2.4 (UTC of day) or 4.2.5.2 (local time and the difference from UTC) provided that
    
    const date2 = parser('2015-W02-4')    // YYYYWWWD (4.1.4 Week date) โ†’ new Date(2015, 0, 8)
    const date3 = parser('19')            // YY (century) โ†’ new Date(1900, 0)
    const date4 = parser('1969-12-31T12:00:00-12:00')  // Full dataTime โ†’ new Date(0)

API

function parser (value: string, group?: string | string[], date?: Date | number | string): Date | void
  • value โ€” ISO string
  • group โ€” optional pattern group name to specify parsing case.
For example, 1900 matches to hhmm (4.2.2.3 p. a) and YYYY (4.1.2.3 p. b) and requires clarification. Supported values: date, time / localtime, datetime and all
  • date โ€” optional date reference to resolve local time values. Defaults to Date.now()
const date5 = parser('12:00') // 2019-09-03T09:00:00.000Z based on Date.now() for Moscow TZ (+03:00)
    const date6 = parser('12:00', 'localtime', new Date(Date.UTC(2010, 0, 1))) // 2000-01-01T09:00:00.000Z

License

MIT