diff options
| author | James Garbutt <43081j@users.noreply.github.com> | 2019-01-16 15:25:52 +0000 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2019-01-16 10:25:52 -0500 |
| commit | 811128864c4db40409c5c5538b56466e4f4e704c (patch) | |
| tree | 0eb4ea9abcf527f622b34ce9f366397234d2d92f | |
| parent | 7cb7b24537cd3771f8d2a02bdae9bffc9c7fcbb8 (diff) | |
datetime: correct hh:mm formats and add test cases (denoland/deno_std#121)
Original: https://github.com/denoland/deno_std/commit/cc40d3e984993afd5e6cdc4acab71676a278e7af
| -rw-r--r-- | datetime/mod.ts | 6 | ||||
| -rw-r--r-- | datetime/test.ts | 50 |
2 files changed, 52 insertions, 4 deletions
diff --git a/datetime/mod.ts b/datetime/mod.ts index c5e6bf0c4..5a967925d 100644 --- a/datetime/mod.ts +++ b/datetime/mod.ts @@ -57,13 +57,13 @@ export function parseDateTime( const datePattern = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})$/; [, y, m, d, ho, mi] = datePattern.exec(datetimeStr); } else if (format === "hh:mm mm-dd-yyyy") { - const datePattern = /^(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2})$/; + const datePattern = /^(\d{2}):(\d{2}) (\d{2})-(\d{2})-(\d{4})$/; [, ho, mi, m, d, y] = datePattern.exec(datetimeStr); } else if (format === "hh:mm dd-mm-yyyy") { - const datePattern = /^(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2})$/; + const datePattern = /^(\d{2}):(\d{2}) (\d{2})-(\d{2})-(\d{4})$/; [, ho, mi, d, m, y] = datePattern.exec(datetimeStr); } else if (format === "hh:mm yyyy-mm-dd") { - const datePattern = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})$/; + const datePattern = /^(\d{2}):(\d{2}) (\d{4})-(\d{2})-(\d{2})$/; [, ho, mi, y, m, d] = datePattern.exec(datetimeStr); } else { throw new Error("Invalid datetime format!"); diff --git a/datetime/test.ts b/datetime/test.ts index c0e0f89b1..5bc7eda21 100644 --- a/datetime/test.ts +++ b/datetime/test.ts @@ -1,4 +1,4 @@ -import { test, assertEqual } from "../testing/mod.ts"; +import { test, assertEqual, assert } from "../testing/mod.ts"; import * as datetime from "mod.ts"; test(function parseDateTime() { @@ -6,13 +6,61 @@ test(function parseDateTime() { datetime.parseDateTime("01-03-2019 16:34", "mm-dd-yyyy hh:mm"), new Date(2019, 1, 3, 16, 34) ); + assertEqual( + datetime.parseDateTime("03-01-2019 16:34", "dd-mm-yyyy hh:mm"), + new Date(2019, 1, 3, 16, 34) + ); + assertEqual( + datetime.parseDateTime("2019-01-03 16:34", "yyyy-mm-dd hh:mm"), + new Date(2019, 1, 3, 16, 34) + ); + assertEqual( + datetime.parseDateTime("16:34 01-03-2019", "hh:mm mm-dd-yyyy"), + new Date(2019, 1, 3, 16, 34) + ); + assertEqual( + datetime.parseDateTime("16:34 03-01-2019", "hh:mm dd-mm-yyyy"), + new Date(2019, 1, 3, 16, 34) + ); + assertEqual( + datetime.parseDateTime("16:34 2019-01-03", "hh:mm yyyy-mm-dd"), + new Date(2019, 1, 3, 16, 34) + ); +}); + +test(function invalidParseDateTimeFormatThrows() { + try { + (datetime as any).parseDateTime("2019-01-01 00:00", "x-y-z"); + assert(false, 'no exception was thrown'); + } catch (e) { + assertEqual(e.message, "Invalid datetime format!"); + } }); + test(function parseDate() { assertEqual( datetime.parseDate("01-03-2019", "mm-dd-yyyy"), new Date(2019, 1, 3) ); + assertEqual( + datetime.parseDate("03-01-2019", "dd-mm-yyyy"), + new Date(2019, 1, 3) + ); + assertEqual( + datetime.parseDate("2019-01-03", "yyyy-mm-dd"), + new Date(2019, 1, 3) + ); }); + +test(function invalidParseDateFormatThrows() { + try { + (datetime as any).parseDate("2019-01-01", "x-y-z"); + assert(false, 'no exception was thrown'); + } catch (e) { + assertEqual(e.message, "Invalid date format!"); + } +}); + test(function currentDayOfYear() { assertEqual( datetime.currentDayOfYear(), |
