From 59edef312eb1edb94a43c9f0a551ec8467d51249 Mon Sep 17 00:00:00 2001 From: VanCode111 <71648558+VanCode111@users.noreply.github.com> Date: Sun, 10 Apr 2022 15:59:51 +0300 Subject: [PATCH] task 1 is implemented --- Task 1/checkDate.js | 67 +++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/Task 1/checkDate.js b/Task 1/checkDate.js index 95180bc..81bb72b 100644 --- a/Task 1/checkDate.js +++ b/Task 1/checkDate.js @@ -1,28 +1,49 @@ function checkDate(timestamp) { - var day = new Date(timestamp * 1000).getDate(); - var month = new Date(timestamp * 1000).getMonth(); - var year = new Date(timestamp * 1000).getFullYear(); - var hour = new Date(timestamp * 1000).getHours(); - - const current_Date = new Date(Date.now()); - const current_day = current_Date.getDate(); - const current_month = current_Date.getMonth() + 1; - const currentYear = current_Date.getFullYear(); - - let isSameDate = false; - - if (year == currentYear) { - if (month == current_month) { - if (day == current_day) { - isSameDate = true; - } else { - isSameDate = false; - } - } + //Сделал ограничение на тип параметра timestamp + + if (typeof timestamp !== "number") { + throw new Error("expected number"); } + // Заменил ключевое слово var на const, потому что var - устаревший способ обявления переменных, + // и значения переменных не будут изменяться + + // Использовал вместо многочисленных вызовов методов для получения отдельных компонентов даты + // метод toLocaleDateString с соответствующими опциями + // Это решение вносит большей читаемости кода + + const LOCALE_CODE = "en-US"; + + const DATE_OPTIONS = { + day: "numeric", + month: "numeric", + year: "numeric", + }; + + const date = new Date(timestamp * 1000); + const hours = date.getHours(); + const localeDate = date.toLocaleDateString(LOCALE_CODE, DATE_OPTIONS); + + //Избавился от конструкции new Date(Date.now()), так как такая конструкция бессмысленна + + const currentDate = new Date(); + const currentLocaleDate = currentDate.toLocaleDateString( + LOCALE_CODE, + DATE_OPTIONS + ); + + //Избавился от конструкции if для большей читаемости логического выражения + + const isSameDate = localeDate === currentLocaleDate; + + //pm начинается с 12 часов + + const dayPeriod = hours >= 12 ? "pm" : "am"; + + //Вынес логику за пределы return + return { - isSameDate: isSameDate, - dayPeriod: hour > 11 ? 'pm' : 'am' - } + isSameDate, + dayPeriod, + }; }