Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.05.2021, 07:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от micscr
Твое решение неверное.
Это лишь твое мнение...

Вместо голословных утверждений начинай тестировать.
Попробуй найти пример где разность дат, таким образом, покажет не правильное количество лет. Или даст не правильное сравнение по годам.
Вот если найдешь такие даты (хоть одну пару) - тогда и будешь надувать щеки и обвинять меня в не верных алгоритмах.
Ответить с цитированием
  #12 (permalink)  
Старый 26.05.2021, 07:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

micscr,
следите за руками, задача узнать что больше ли текущее время, 9 часов 10 минут(для примера) 10 часов.
классика: вычислить минуты 9 * 60 + 10 и 10 * 60, 550 < 600, меньше
а можно так 9.1 < 10 и тот же результат.
Ответить с цитированием
  #13 (permalink)  
Старый 26.05.2021, 09:26
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

Сообщение от ksa Посмотреть сообщение
Это лишь твое мнение...

Вместо голословных утверждений начинай тестировать.
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...


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

Последний раз редактировалось micscr, 26.05.2021 в 13:20.
Ответить с цитированием
  #14 (permalink)  
Старый 27.05.2021, 09:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от micscr
let d1 = '29.02.2008'
let d2 = '28.02.2018'
// ...
alert(val >= 10) //false...
А ты считаешь что должно быть true?
Ответить с цитированием
  #15 (permalink)  
Старый 27.05.2021, 10:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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

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

Последний раз редактировалось ksa, 27.05.2021 в 10:02.
Ответить с цитированием
  #16 (permalink)  
Старый 27.05.2021, 13:25
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,578

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычитание дат в Javascript kover-samolet Общие вопросы Javascript 24 27.02.2019 23:16
Поиск вхождения даты в диапазон дат. Sonya Серверные языки и технологии 6 22.08.2017 17:47
Сортировка дат Alexej Общие вопросы Javascript 3 21.01.2015 19:06
Вычитание дат в Javascript kover-samolet Общие вопросы Javascript 0 29.12.2014 21:57
как в datepicker задать диапазон дат во время выполнения скрипта. Yurik jQuery 0 23.02.2011 12:19