Skip to main content
Module

x/ptera/parse_date_test.ts

Ptera is DateTime library for Deno
Latest
File
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
import { assertEquals } from "https://deno.land/std@0.95.0/testing/asserts.ts";import { parseDateStr, parseISO } from "./parse_date.ts";import { INVALID_DATE } from "./utils.ts";
Deno.test("parseDateStr valid", () => { const tests = [ { dateStr: "20210531", format: "YYYYMMdd", expected: { year: 2021, month: 5, day: 31, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-05-31 21:05:30", format: "YYYY-MM-dd HH:mm:ss", expected: { year: 2021, month: 5, day: 31, hour: 21, minute: 5, second: 30, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-05-31 09:30 AM", format: "YYYY-MM-dd hh:mm a", expected: { year: 2021, month: 5, day: 31, hour: 9, minute: 30, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-05-31 09:30 PM", format: "YYYY-MM-dd hh:mm a", expected: { year: 2021, month: 5, day: 31, hour: 21, minute: 30, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-05-31 09:30Z", format: "YYYY-MM-dd hh:mmZ", expected: { year: 2021, month: 5, day: 31, hour: 9, minute: 30, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-05-31 09:30 +09:00", format: "YYYY-MM-dd hh:mm Z", expected: { year: 2021, month: 5, day: 31, hour: 9, minute: 30, second: 0, millisecond: 0, offsetMillisec: 32400000, locale: "en", }, }, { dateStr: "2021-05-31 09:30 -09:00", format: "YYYY-MM-dd hh:mm Z", expected: { year: 2021, month: 5, day: 31, hour: 9, minute: 30, second: 0, millisecond: 0, offsetMillisec: -32400000, locale: "en", }, }, { dateStr: "2021-1", format: "YYYY-D", expected: { year: 2021, month: 1, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-365", format: "YYYY-D", expected: { year: 2021, month: 12, day: 31, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-365", format: "YYYY-DDD", expected: { year: 2021, month: 12, day: 31, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021 January", format: "YYYY MMMM", expected: { year: 2021, month: 1, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021 Jan", format: "YYYY MMM", expected: { year: 2021, month: 1, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-06-20 01:02:03.004 AM +01:00", format: "YYYY-MM-dd HH:mm:ss.S a Z", expected: { year: 2021, month: 6, day: 20, hour: 1, minute: 2, second: 3, millisecond: 4, offsetMillisec: 3600000, locale: "en", }, }, { dateStr: "5/Aug/2021:14:15:30 +0900", format: "d/MMM/YYYY:HH:mm:ss ZZ", expected: { year: 2021, month: 8, day: 5, hour: 14, minute: 15, second: 30, millisecond: 0, offsetMillisec: 32400000, locale: "en", }, }, { dateStr: "1.1.2021 1:2:3:4 PM -0100", format: "d/M/YYYY H:m:s:S a ZZ", expected: { year: 2021, month: 1, day: 1, hour: 13, minute: 2, second: 3, millisecond: 4, offsetMillisec: -3600000, locale: "en", }, }, { dateStr: "23_Jan_2021_141523", format: "dd_MMM_YYYY_hhmmss", expected: { year: 2021, month: 1, day: 23, hour: 14, minute: 15, second: 23, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "20210112", format: "YYYYMMdd", expected: { year: 2021, month: 1, day: 12, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, ]; tests.forEach((t) => { assertEquals(parseDateStr(t.dateStr, t.format), t.expected); });});
Deno.test("parseDateStr invalid", () => { const tests = [ { dateStr: "21-04-2021", format: "YYYY-MM-dd", }, { dateStr: "21/04/2021", format: "YYYY-MM-dd", }, { dateStr: "2021 Jan", format: "YY DDD", }, { dateStr: "2021 Turnip 03", format: "YYYY MMMM DD", }, { dateStr: "2021-18-03-01", format: "YYYY-MM-dd", }, { dateStr: "2021-01-32", format: "YYYY-MM-dd", }, ]; tests.forEach((t) => { assertEquals(parseDateStr(t.dateStr, t.format), INVALID_DATE); });});
Deno.test("parseDateStr locale", () => { const tests = [ { dateStr: "2021 1月", format: "YYYY MMM", locale: "ja", expected: { year: 2021, month: 1, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "ja", }, }, { dateStr: "2021 лютий 03", format: "YYYY MMMM dd", locale: "uk", expected: { year: 2021, month: 2, day: 3, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "uk", }, }, ]; tests.forEach((t) => { assertEquals( parseDateStr(t.dateStr, t.format, { locale: t.locale }), t.expected, ); });});
Deno.test("parseISO", () => { const tests = [ { dateStr: "2021", expected: { year: 2021, month: 0, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "202106", expected: { year: 2021, month: 6, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-06", expected: { year: 2021, month: 6, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-365", expected: { year: 2021, month: 12, day: 31, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "20210430", expected: { year: 2021, month: 4, day: 30, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-001", expected: { year: 2021, month: 1, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 10 // { // dateStr: "2021-W25-6", // expected: { // year: 2021, // month: 6, // day: 26, // hour: 0, // minute: 0, // second: 0, // millisecond: 0, // offsetMillisec: 0, // locale: 'en', // }, // }, // length 12 { dateStr: "2021-06-30T21", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 0, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 15 { dateStr: "2021-06-30T2115", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 16 { dateStr: "2021-06-30T21:15", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 0, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 18 { dateStr: "2021-04-15 09:24:15", expected: { year: 2021, month: 4, day: 15, hour: 9, minute: 24, second: 15, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 19 { dateStr: "2021-06-30T21:15:30", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 0, offsetMillisec: 0, locale: "en", }, }, // length 21 { dateStr: "2021-06-30T211530.200", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 200, offsetMillisec: 0, locale: "en", }, }, // length 23 { dateStr: "2021-06-30T21:15:30.200", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 200, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-06-30T21:15:30.200Z", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 200, offsetMillisec: 0, locale: "en", }, }, { dateStr: "2021-06-30T21:15:30.200+09:00", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 200, offsetMillisec: 32400000, locale: "en", }, }, { dateStr: "2021-06-30T21:15:30.200-09:00", expected: { year: 2021, month: 6, day: 30, hour: 21, minute: 15, second: 30, millisecond: 200, offsetMillisec: -32400000, locale: "en", }, }, ]; tests.forEach((t) => { assertEquals( parseISO(t.dateStr), t.expected, ); });});