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

micscr 25.05.2021 15:25

Вычитание дат
 
Приветствую.
Скажите, а есть какие то встроенные способы узнать что одна дата >= другой даты на например 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

ksa 25.05.2021 18:49

Цитата:

Сообщение от 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 18:50

Цитата:

Сообщение от micscr
Вот примерно как в php что я делаю:

Кабы знать еще твой ПХП... :-?

micscr 25.05.2021 19:08

А что за магическая величина 10000?

ksa 25.05.2021 19:23

Цитата:

Сообщение от micscr
А что за магическая величина 10000?

Никакой магии... Тебе же нужна разница дат в годах?
YYYYMMDD - если разделить такое число на 10000, ты и получишь свои года.

micscr 25.05.2021 20:37

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

ksa 25.05.2021 21:55

Цитата:

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

Дело твое конечно... :D

Но мы с таким вариантом уже более 30 лет определяем возраст (в годах) и проблем не имели.

ksa 25.05.2021 21:57

Цитата:

Сообщение от micscr
Дни, месяцы и года - это не десятичная система счисления.

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

Но ты можешь сомневаться сколько хочешь... :D

micscr 26.05.2021 06:07

Твое решение неверное.
В году никак не 10000 дней, и не 100 месяцев, чтобы так сравнивать "просто для сравнения"

рони 26.05.2021 07:31

Цитата:

Сообщение от micscr
В году никак не 10000 дней, и не 100 месяцев, чтобы так сравнивать "просто для сравнения"

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


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