summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Garbutt <43081j@users.noreply.github.com>2019-01-16 15:25:52 +0000
committerRyan Dahl <ry@tinyclouds.org>2019-01-16 10:25:52 -0500
commit811128864c4db40409c5c5538b56466e4f4e704c (patch)
tree0eb4ea9abcf527f622b34ce9f366397234d2d92f
parent7cb7b24537cd3771f8d2a02bdae9bffc9c7fcbb8 (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.ts6
-rw-r--r--datetime/test.ts50
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(),