From 33ac6ac60f0c4b1e4d5dda7765916a4db265cd85 Mon Sep 17 00:00:00 2001 From: nanov Date: Wed, 6 Nov 2019 16:51:59 +0200 Subject: [PATCH] feat: implement date handling and formatting --- lib/utils.js | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 3390ead..85e7431 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,18 +1,46 @@ 'use strict'; +const prefixNumber = (n) => { + if (n < 10) + return `0${n}`; + return n.toString(); +}; + +const date = { + getDateObject(d = Date.now()) { + const dateObject = new Date(d); + // eslint-disable-next-line no-restricted-globals + if (isNaN(dateObject)) + throw new Error(`${d} is invalid date.`); + return dateObject; + }, + toISODate(d = Date.now(), utc = true) { + const t = date.getDateObject(d); + if (utc) + return `${t.getUTCFullYear()}-${prefixNumber(t.getUTCMonth() + 1)}-${prefixNumber(t.getUTCDate())}`; + return `${t.getFullYear()}-${prefixNumber(t.getMonth() + 1)}-${prefixNumber(t.getDate())}`; + }, + toISOTime(d = Date.now(), utc = true) { + const t = date.getDateObject(d); + if (utc) + return `${prefixNumber(t.getUTCHours())}:${prefixNumber(t.getUTCMinutes())}:${prefixNumber(t.getUTCSeconds())}`; + return `${prefixNumber(t.getHours())}:${prefixNumber(t.getMinutes())}:${prefixNumber(t.getSeconds())}`; + }, +}; + const dateRange = (start, end) => { if (start && end) return { DateRange: { - Start: start, - End: end, + Start: date.toISODate(start), + End: date.toISODate(end), }, }; return {}; }; - module.exports = { dateRange, + date, };