diff options
Diffstat (limited to 'std/datetime')
-rw-r--r-- | std/datetime/mod.ts | 49 | ||||
-rw-r--r-- | std/datetime/test.ts | 22 |
2 files changed, 35 insertions, 36 deletions
diff --git a/std/datetime/mod.ts b/std/datetime/mod.ts index 9665a92b2..fe6fe6b3c 100644 --- a/std/datetime/mod.ts +++ b/std/datetime/mod.ts @@ -71,7 +71,7 @@ export type DateTimeFormat = */ export function parseDateTime( datetimeStr: string, - format: DateTimeFormat + format: DateTimeFormat, ): Date { let m, d, y, ho, mi: string; let datePattern: RegExp; @@ -114,8 +114,7 @@ export function parseDateTime( */ export function dayOfYear(date: Date): number { const yearStart = new Date(date.getFullYear(), 0, 0); - const diff = - date.getTime() - + const diff = date.getTime() - yearStart.getTime() + (yearStart.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000; return Math.floor(diff / DAY); @@ -135,13 +134,12 @@ export function currentDayOfYear(): number { */ export function weekOfYear(date: Date): number { const workingDate = new Date( - Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) + Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()), ); const day = workingDate.getUTCDay(); - const nearestThursday = - workingDate.getUTCDate() + + const nearestThursday = workingDate.getUTCDate() + Day.Thu - (day === Day.Sun ? DAYS_PER_WEEK : day); @@ -236,21 +234,19 @@ export type DifferenceOptions = { export function difference( from: Date, to: Date, - options?: DifferenceOptions + options?: DifferenceOptions, ): DifferenceFormat { - const uniqueUnits = options?.units - ? [...new Set(options?.units)] - : [ - "miliseconds", - "seconds", - "minutes", - "hours", - "days", - "weeks", - "months", - "quarters", - "years", - ]; + const uniqueUnits = options?.units ? [...new Set(options?.units)] : [ + "miliseconds", + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months", + "quarters", + "years", + ]; const bigger = Math.max(from.getTime(), to.getTime()); const smaller = Math.min(from.getTime(), to.getTime()); @@ -285,14 +281,14 @@ export function difference( differences.quarters = Math.floor( (typeof differences.months !== "undefined" && differences.months / 4) || - calculateMonthsDifference(bigger, smaller) / 4 + calculateMonthsDifference(bigger, smaller) / 4, ); break; case "years": differences.years = Math.floor( (typeof differences.months !== "undefined" && differences.months / 12) || - calculateMonthsDifference(bigger, smaller) / 12 + calculateMonthsDifference(bigger, smaller) / 12, ); break; } @@ -309,10 +305,13 @@ function calculateMonthsDifference(bigger: number, smaller: number): number { const calendarDiffrences = Math.abs(yearsDiff * 12 + monthsDiff); const compareResult = biggerDate > smallerDate ? 1 : -1; biggerDate.setMonth( - biggerDate.getMonth() - compareResult * calendarDiffrences + biggerDate.getMonth() - compareResult * calendarDiffrences, ); - const isLastMonthNotFull = - biggerDate > smallerDate ? 1 : -1 === -compareResult ? 1 : 0; + const isLastMonthNotFull = biggerDate > smallerDate + ? 1 + : -1 === -compareResult + ? 1 + : 0; const months = compareResult * (calendarDiffrences - isLastMonthNotFull); return months === 0 ? 0 : months; } diff --git a/std/datetime/test.ts b/std/datetime/test.ts index a223abce2..d5dccee73 100644 --- a/std/datetime/test.ts +++ b/std/datetime/test.ts @@ -7,27 +7,27 @@ Deno.test({ fn: () => { assertEquals( datetime.parseDateTime("01-03-2019 16:30", "mm-dd-yyyy hh:mm"), - new Date(2019, 0, 3, 16, 30) + new Date(2019, 0, 3, 16, 30), ); assertEquals( datetime.parseDateTime("03-01-2019 16:31", "dd-mm-yyyy hh:mm"), - new Date(2019, 0, 3, 16, 31) + new Date(2019, 0, 3, 16, 31), ); assertEquals( datetime.parseDateTime("2019-01-03 16:32", "yyyy-mm-dd hh:mm"), - new Date(2019, 0, 3, 16, 32) + new Date(2019, 0, 3, 16, 32), ); assertEquals( datetime.parseDateTime("16:33 01-03-2019", "hh:mm mm-dd-yyyy"), - new Date(2019, 0, 3, 16, 33) + new Date(2019, 0, 3, 16, 33), ); assertEquals( datetime.parseDateTime("16:34 03-01-2019", "hh:mm dd-mm-yyyy"), - new Date(2019, 0, 3, 16, 34) + new Date(2019, 0, 3, 16, 34), ); assertEquals( datetime.parseDateTime("16:35 2019-01-03", "hh:mm yyyy-mm-dd"), - new Date(2019, 0, 3, 16, 35) + new Date(2019, 0, 3, 16, 35), ); }, }); @@ -41,7 +41,7 @@ Deno.test({ (datetime as any).parseDateTime("2019-01-01 00:00", "x-y-z"); }, Error, - "Invalid datetime format!" + "Invalid datetime format!", ); }, }); @@ -51,15 +51,15 @@ Deno.test({ fn: () => { assertEquals( datetime.parseDate("01-03-2019", "mm-dd-yyyy"), - new Date(2019, 0, 3) + new Date(2019, 0, 3), ); assertEquals( datetime.parseDate("03-01-2019", "dd-mm-yyyy"), - new Date(2019, 0, 3) + new Date(2019, 0, 3), ); assertEquals( datetime.parseDate("2019-01-03", "yyyy-mm-dd"), - new Date(2019, 0, 3) + new Date(2019, 0, 3), ); }, }); @@ -73,7 +73,7 @@ Deno.test({ (datetime as any).parseDate("2019-01-01", "x-y-z"); }, Error, - "Invalid date format!" + "Invalid date format!", ); }, }); |