From 13be80afb9812b1c75a44ca350d9d1fa98ecc0da Mon Sep 17 00:00:00 2001 From: Brent Guffens Date: Sat, 27 Jan 2018 17:28:40 +0100 Subject: [PATCH] Alternative solution --- .../8-format-date-relative/solution.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/1-js/05-data-types/10-date/8-format-date-relative/solution.md b/1-js/05-data-types/10-date/8-format-date-relative/solution.md index 87864be7..24fec997 100644 --- a/1-js/05-data-types/10-date/8-format-date-relative/solution.md +++ b/1-js/05-data-types/10-date/8-format-date-relative/solution.md @@ -43,3 +43,34 @@ alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5 min. ago" // yesterday's date like 31.12.2016, 20:00 alert( formatDate(new Date(new Date - 86400 * 1000)) ); ``` + +Alternative solution: + +```js run +function formatDate(date) { + let dayOfMonth = date.getDate(); + let month = date.getMonth() + 1; + let year = date.getFullYear(); + let hour = date.getHours(); + let minutes = date.getMinutes(); + let diffMs = new Date() - date; + let diffSec = Math.round(diffMs / 1000); + let diffMin = diffSec / 60; + let diffHour = diffMin / 60; + + // formatting + year = year.toString().slice(-2); + month = month < 10 ? '0' + month : month; + dayOfMonth = dayOfMonth < 10 ? '0' + dayOfMonth : dayOfMonth; + + if (diffSec < 1) { + return 'right now'; + } else if (diffMin < 1) { + return `${diffSec} sec. ago` + } else if (diffHour < 1) { + return `${diffMin} min. ago` + } else { + return `${dayOfMonth}.${month}.${year} ${hour}:${minutes}` + } +} +```