Files
2026-07-13 12:48:55 +08:00

122 lines
6.3 KiB
JavaScript

import test from 'tape'
import nlp from './_lib.js'
test('text sets timezone', function (t) {
const arr = [
['today', '2019-01-01T00:00:00.000Z'], //london
['today in PST', '2019-01-01T00:00:00.000-08:00'],
['today in eastern time', '2019-01-01T00:00:00.000-05:00'],
['today GMT+9', '2019-01-01T00:00:00.000-09:00'],
['tomorrow', '2019-01-02T00:00:00.000Z'],
['yesterday', '2018-12-31T00:00:00.000Z'],
['tomorrow in PST', '2019-01-02T00:00:00.000-08:00'],
['yesterday in PST', '2018-12-31T00:00:00.000-08:00'],
['today in pacific time', '2019-01-01T00:00:00.000-08:00'],
['today in pacific standard time', '2019-01-01T00:00:00.000-08:00'],
['today in EST', '2019-01-01T00:00:00.000-05:00'],
['today in est', '2019-01-01T00:00:00.000-05:00'],
['today in EDT', '2019-01-01T00:00:00.000-05:00'],
['today in CST', '2019-01-01T00:00:00.000-05:00'],
['today in MST', '2019-01-01T00:00:00.000-07:00'],
['today in PDT', '2019-01-01T00:00:00.000-08:00'],
['today in central time', '2019-01-01T00:00:00.000-06:00'],
['today in mountain time', '2019-01-01T00:00:00.000-07:00'],
['today in alaskan time', '2019-01-01T00:00:00.000-09:00'],
['today in hawaiian time', '2019-01-01T00:00:00.000-10:00'],
['today in hawaii time', '2019-01-01T00:00:00.000-10:00'],
['today in atlantic time', '2019-01-01T00:00:00.000-04:00'],
['today in newfoundland time', '2019-01-01T00:00:00.000-03:30'],
['today in eastern standard time', '2019-01-01T00:00:00.000-05:00'],
['today in pacific daylight time', '2019-01-01T00:00:00.000-08:00'],
['today in central standard time', '2019-01-01T00:00:00.000-06:00'],
['today in mountain standard time', '2019-01-01T00:00:00.000-07:00'],
['today in GMT', '2019-01-01T00:00:00.000Z'],
['today in gmt', '2019-01-01T00:00:00.000Z'],
['today in UTC', '2019-01-01T00:00:00.000Z'],
['today in utc', '2019-01-01T00:00:00.000Z'],
['today GMT+0', '2019-01-01T00:00:00.000Z'],
['today GMT+1', '2019-01-01T00:00:00.000-01:00'],
['today GMT+5', '2019-01-01T00:00:00.000-05:00'],
['today GMT+8', '2019-01-01T00:00:00.000-08:00'],
['today UTC+5', '2019-01-01T00:00:00.000+05:00'],
['today utc+5', '2019-01-01T00:00:00.000+05:00'],
['today in GMT+5', '2019-01-01T00:00:00.000-05:00'],
['today in central european time', '2019-01-01T00:00:00.000+01:00'],
['today in CET', '2019-01-01T00:00:00.000+01:00'],
['today in british time', '2019-01-01T00:00:00.000Z'],
['today in BST', '2019-01-01T00:00:00.000Z'],
['today in MSK', '2019-01-01T00:00:00.000+03:00'],
['today in japan time', '2019-01-01T00:00:00.000+09:00'],
['today in JST', '2019-01-01T00:00:00.000Z'],
['today in australian eastern standard time', '2019-01-01T00:00:00.000+10:00'],
['today in AEST', '2019-01-01T00:00:00.000+10:00'],
['today in peru time', '2019-01-01T00:00:00.000-05:00'],
['today in brazil time', '2019-01-01T00:00:00.000-03:00'],
['today in argentina time', '2019-01-01T00:00:00.000-03:00'],
['today in venezuela time', '2019-01-01T00:00:00.000-04:00'],
['january 1st in PST', '2019-01-01T00:00:00.000-08:00'],
['january 1st in eastern time', '2019-01-01T00:00:00.000-05:00'],
['jan 1 in pacific time', '2019-01-01T00:00:00.000-08:00'],
['jan 1 in GMT+9', '2019-01-01T00:00:00.000-09:00'],
['2019-01-01 in PST', '2019-01-01T00:00:00.000-08:00'],
['2019-01-01 in eastern time', '2019-01-01T00:00:00.000-05:00'],
['on january 1st in PST', '2019-01-01T00:00:00.000-08:00'],
['9am PST', '2019-01-01T09:00:00.000-08:00'],
['4pm eastern time', '2019-01-01T16:00:00.000-05:00'],
['noon pacific time', '2019-01-01T12:00:00.000-08:00'],
['march 15th in PST', '2019-03-15T00:00:00.000-07:00'],
['march 15th in eastern time', '2019-03-15T00:00:00.000-04:00'],
['february 2nd in central time', '2019-02-02T00:00:00.000-06:00'],
// ['today GMT-9', '2019-01-01T00:00:00.000-09:00'],
]
const context = {
today: '2019-01-01',
timezone: 'Europe/London',
}
arr.forEach((a) => {
const doc = nlp(a[0])
const json = doc.dates(context).json()[0] || {}
t.equal(json.dates.start, a[1], a[0])
})
t.end()
})
test('set timezone context', function (t) {
const phrase = 'April 7th 2018'
const arr = [
{ tz: 'Asia/Karachi', start: '2018-04-07T00:00:00.000+05:00' },
{ tz: 'Asia/Vladivostok', start: '2018-04-07T00:00:00.000+10:00' },
{ tz: 'Asia/Tokyo', start: '2018-04-07T00:00:00.000+09:00' },
{ tz: 'Asia/Shanghai', start: '2018-04-07T00:00:00.000+08:00' },
{ tz: 'Asia/Kolkata', start: '2018-04-07T00:00:00.000+05:30' },
{ tz: 'Asia/Dubai', start: '2018-04-07T00:00:00.000+04:00' },
{ tz: 'Asia/Singapore', start: '2018-04-07T00:00:00.000+08:00' },
{ tz: 'Asia/Bangkok', start: '2018-04-07T00:00:00.000+07:00' },
{ tz: 'Europe/London', start: '2018-04-07T00:00:00.000+01:00' },
{ tz: 'Europe/Paris', start: '2018-04-07T00:00:00.000+02:00' },
{ tz: 'Europe/Berlin', start: '2018-04-07T00:00:00.000+02:00' },
{ tz: 'Europe/Moscow', start: '2018-04-07T00:00:00.000+03:00' },
{ tz: 'America/New_York', start: '2018-04-07T00:00:00.000-04:00' },
{ tz: 'America/Los_Angeles', start: '2018-04-07T00:00:00.000-07:00' },
{ tz: 'America/Chicago', start: '2018-04-07T00:00:00.000-05:00' },
{ tz: 'America/Denver', start: '2018-04-07T00:00:00.000-06:00' },
{ tz: 'America/Toronto', start: '2018-04-07T00:00:00.000-04:00' },
{ tz: 'America/Vancouver', start: '2018-04-07T00:00:00.000-07:00' },
{ tz: 'America/Sao_Paulo', start: '2018-04-07T00:00:00.000-03:00' },
{ tz: 'America/Mexico_City', start: '2018-04-07T00:00:00.000-06:00' },
{ tz: 'Australia/Sydney', start: '2018-04-07T00:00:00.000+10:00' },
{ tz: 'Australia/Perth', start: '2018-04-07T00:00:00.000+08:00' },
{ tz: 'Pacific/Auckland', start: '2018-04-07T00:00:00.000+12:00' },
{ tz: 'Pacific/Honolulu', start: '2018-04-07T00:00:00.000-10:00' },
{ tz: 'Africa/Cairo', start: '2018-04-07T00:00:00.000+02:00' },
{ tz: 'Africa/Johannesburg', start: '2018-04-07T00:00:00.000+02:00' },
{ tz: 'Canada/Eastern', start: '2018-04-07T00:00:00.000-04:00' },
{ tz: 'Canada/Pacific', start: '2018-04-07T00:00:00.000-07:00' },
]
arr.forEach((a) => {
const json = nlp(phrase).dates({ timezone: a.tz }).json()[0] || {}
t.equal(json.dates.start, a.start, a.tz)
})
t.end()
})