Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вычитание дат (https://javascript.ru/forum/misc/82563-vychitanie-dat.html)

ksa 26.05.2021 07:32

Цитата:

Сообщение от micscr
Твое решение неверное.

Это лишь твое мнение... :D

Вместо голословных утверждений начинай тестировать. ;)
Попробуй найти пример где разность дат, таким образом, покажет не правильное количество лет. Или даст не правильное сравнение по годам.
Вот если найдешь такие даты (хоть одну пару) - тогда и будешь надувать щеки и обвинять меня в не верных алгоритмах.

рони 26.05.2021 07:41

micscr,
следите за руками, задача узнать что больше ли текущее время, 9 часов 10 минут(для примера) 10 часов.
классика: вычислить минуты 9 * 60 + 10 и 10 * 60, 550 < 600, меньше
а можно так 9.1 < 10 и тот же результат.

micscr 26.05.2021 09:26

Цитата:

Сообщение от ksa (Сообщение 537150)
Это лишь твое мнение... :D

Вместо голословных утверждений начинай тестировать. ;)

let d1 = '29.02.2008'
let d2 = '28.02.2018'
const re = /(\d\d)\.(\d\d)\.(\d+)/
d1 = d1.replace(re,'$3$2$1')
d2 = d2.replace(re,'$3$2$1')
const val = (d2 - d1) / 10000
alert(val >= 10) //false...


Но вообще я понял это трюк, что годами с хвостиками играть.
Из кода я сразу этого не понял, сам уже давно просто чистый код пишу, где переменные сами за себя говорят

ksa 27.05.2021 09:56

Цитата:

Сообщение от micscr
let d1 = '29.02.2008'
let d2 = '28.02.2018'
// ...
alert(val >= 10) //false...

А ты считаешь что должно быть true? :blink:

ksa 27.05.2021 10:00

Цитата:

Сообщение от micscr
с хвостиками играть

Так же нужно помнить о довольно "странной" арифметике в JS
alert(150000 / 10000)

Т.е. не всегда при делении на 10000 будет (ожидаемое) целое число.
Т.ч. нужно правильно округлять результат деления.
Хотя, может при именно делении на число кратное 10 проблем не будет...

micscr 27.05.2021 13:25

Ты прав, для операции вычитания дат тут вроде все окей, это по сути реализация алгоритма сравнения: год-год, месяц-месяц, день-день.


Часовой пояс GMT +3, время: 03:14.