parse-human-relative-time

    2.0.2 • Public • Published

    parse-human-relative-time

    Yet another package to parse human relative time strings like "next Tuesday 3pm" and apply it to a date+time.

    const {DateTime} = require('luxon')
    const parseHumanRelativeTime = require('parse-human-relative-time')(DateTime)
     
    // Europe/Berlin switched to DST at 31st of March at 2am.
    const tz = 'Europe/Berlin'
    const dt = DateTime.fromISO('2019-03-31T01:59+01:00').setZone(tz)
     
    parseHumanRelativeTime('in 2 minutes', dt)
    .toISO({suppressSeconds: true, suppressMilliseconds: true})
    // 2019-03-31T03:01+02:00

    npm version build status ISC-licensed minimum Node.js version chat with me on Gitter support me on Patreon

    Installation

    npm install parse-human-relative-time

    Usage

    When using luxon, note that it currently always follows ISO weekdays (0 = Monday) instead of the locale.

    date-fns integration

    const dateFns = require('date-fns')
    const parseHumanRelative = require('parse-human-relative-time/date-fns')(dateFns)
    const {format} = require('date-fns-tz')
     
    // Europe/Berlin switched to DST at 31st of March at 2am.
    const withoutDST = new Date('2019-03-31T01:59+01:00')
    const timeZone = 'Europe/Berlin'
     
    const withDST = parseHumanRelative('in 2 minutes', withoutDST)
    format(withDST, 'HH:mm zz', {timeZone})
    // 03:01 GMT+2

    Lexing into instructions

    const lexHumanRelativeTime = require('parse-human-relative-time/lex')
     
    lexHumanRelativeTime('next tuesday 5pm')
    [
        // next tuesday
        ['startOfWeek'],
        ['addWeeks', 1],
        ['setDay', 2],
     
        // 12:01 am
        ['setHours', 17],
        ['setMinutes', 0],
        ['setSeconds', 0],
        ['setMilliseconds', 0]
    ]

    Why yet another package?

    Other packages don't handle time zones correctly, because they

    Some actually do it right, but don't support a lot of expressions, e.g. relative-time-expression.

    This package parses a human relative time string (e.g. next Tuesday 2pm) into a set of manipulation instructions and applies them to a Date using date-fns. It therefore separates parsing and manipulation, leaving complex topic of time zones up to date/time libraries.

    Contributing

    If you have a question or need support using parse-human-relative-time, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.

    Install

    npm i parse-human-relative-time

    DownloadsWeekly Downloads

    32

    Version

    2.0.2

    License

    ISC

    Unpacked Size

    33.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • derhuerst