Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.05.2021, 15:25
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,568

Вычитание дат
Приветствую.
Скажите, а есть какие то встроенные способы узнать что одна дата >= другой даты на например 10 лет.
Чтобы без какого то ручника, типа считать количество дней или миллисекунд.
Вот примерно как в php что я делаю:
$res = isDateMoreThan10Diff(
\DateTime::createFromFormat('d.m.Y', $date1),
\DateTime::createFromFormat('d.m.Y', $date2),
));

function isDateMoreThan10Diff(\DateTime $dateStart, \DateTime $dateEnd) 
    {
        $interval = $dateStart->diff($dateEnd);
        $check = $interval->format('%r%y');   
        if (strpos($check, '-') === 0) {
            return false;
        }
        return (intval($check) >= 10) ? true : false;        
    }


И как лучше дату в js дату преобразовывать, в плагине она у меня в формате dd.mm.yyyy
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2021, 18:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от micscr
а есть какие то встроенные способы узнать что одна дата >= другой даты на например 10 лет.
...
как лучше дату в js дату преобразовывать, в плагине она у меня в формате dd.mm.yyyy
Вообще с датами можно не связываться...

let d1 = '22.01.2007'
let d2 = '25.05.2021'
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)

Последний раз редактировалось ksa, 25.05.2021 в 19:52.
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2021, 18:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от micscr
Вот примерно как в php что я делаю:
Кабы знать еще твой ПХП...
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2021, 19:08
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,568

А что за магическая величина 10000?
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2021, 19:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от micscr
А что за магическая величина 10000?
Никакой магии... Тебе же нужна разница дат в годах?
YYYYMMDD - если разделить такое число на 10000, ты и получишь свои года.
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2021, 20:37
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,568

Я сомневаюсь что дату можно так превращать в десятичное число и что то с ним делать.
Дни, месяцы и года - это не десятичная система счисления.
Ответить с цитированием
  #7 (permalink)  
Старый 25.05.2021, 21:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от micscr
Я сомневаюсь что дату можно так превращать в десятичное число и что то с ним делать.
Дело твое конечно...

Но мы с таким вариантом уже более 30 лет определяем возраст (в годах) и проблем не имели.
Ответить с цитированием
  #8 (permalink)  
Старый 25.05.2021, 21:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от micscr
Дни, месяцы и года - это не десятичная система счисления.
Дни и месяцы тебя никто так считать и не заставляет. Так считаются только годы. И годы можно сравнивать, используя дробную часть просто для сравнения.

Но ты можешь сомневаться сколько хочешь...
Ответить с цитированием
  #9 (permalink)  
Старый 26.05.2021, 06:07
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,568

Твое решение неверное.
В году никак не 10000 дней, и не 100 месяцев, чтобы так сравнивать "просто для сравнения"
Ответить с цитированием
  #10 (permalink)  
Старый 26.05.2021, 07:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от micscr
В году никак не 10000 дней, и не 100 месяцев, чтобы так сравнивать "просто для сравнения"
10000 никакого отношения к дням или месяцам не имеет, это математическая логика, это возможность создать такие числа, которые дадут правильную разницу в годах.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычитание дат в Javascript kover-samolet Общие вопросы Javascript 30 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