From 7c38dae658cb92a8b30600ec3a0caccc1875b0fe Mon Sep 17 00:00:00 2001 From: KoroLion Date: Fri, 28 May 2021 17:34:57 +0300 Subject: [PATCH] now --- src/now.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/now.js diff --git a/src/now.js b/src/now.js new file mode 100644 index 0000000..f449dbd --- /dev/null +++ b/src/now.js @@ -0,0 +1,44 @@ +// Реализовать метод `now`: +// - now() — вернет текущий timestamp +// - now('+min'); — `сейчас + 1 минута` +// - now('-3.5h'); — или `сейчас - 3.5 часа` +// +// Поддерживаемые форматы: +// `ms`, `s`, `sec`, `m`, `min`, `h`, `hours` & etc. + +const typeToMultDict = { + 'ms': 1, + 's': 1000, + 'sec': 1000, + 'm': 1000 * 60, + 'min': 1000 * 60, + 'h': 1000 * 60 * 60, + 'hours': 1000 * 60 * 60, + 'etc': 1 // if you need more - extend this dict =) +} + +function typeToMult(type) { + let mult = typeToMultDict[type]; + if (!mult) { + mult = 1; + } + return mult; +} + +function now(v) { + let amount = 0; + let mult = 1; + if (v) { + v = v.trim(); + amount = parseFloat(v) + let len = amount.toString().length; + if (amount >= 0) { + len++; + } + const type = v.slice(len).trim(); + mult = typeToMult(type); + } + return Date.now() + amount * mult; +} + +console.log(now('+30min')); // Date.now() + 30 * 60 * 1000