Расчет даты в будущем или прошлом

Elm:
Расчет даты в будущем или прошлом

Как:

Модуль Time в Elm и пакет justinmimbs/time-extra позволяют нам легко манипулировать датами.

import Time exposing (Posix)
import Time.Extra as TimeExtra

--calculateDate : Int -> Posix -> Posix
-- @deltaDays: количество дней для добавления (отрицательное для вычитания)
-- @fromDate: начальная дата в формате Posix

calculateDate deltaDays fromDate =
    TimeExtra.add TimeExtra.days deltaDays fromDate

-- Использование
-- Не забудьте, Elm считает время в миллисекундах с эпохи Unix.

sampleDate = Time.millisToPosix 1580515200000  -- 1 февраля 2020 г. 00:00:00 UTC
futureDate = calculateDate 10 sampleDate       -- Добавляем 10 дней
pastDate = calculateDate -15 sampleDate         -- Вычитаем 15 дней

-- примеры вывода:
-- futureDate -> 1581552000000  -- 12 февраля 2020 г. 00:00:00 UTC
-- pastDate -> 1580006400000    -- 17 января 2020 г. 00:00:00 UTC

Глубже

В старые времена работа с датами в программировании была сложной. Разные системы, форматы и часовые пояса доставляли всем головную боль. Модуль Time в Elm, основанный на системе времени Unix (миллисекунды с 1970 года), стандартизирует это. Пакет justinmimbs/time-extra дополнительно упрощает выполнение операций с датами, например, добавление или вычитание дней.

Альтернативы? Другие языки имеют свои собственные библиотеки, например, datetime в Python или Date в JavaScript. Но подход Elm предлагает строгую типизацию и чистоту, снижая количество ошибок.

Помимо добавления дней, вы также можете работать с месяцами, годами или даже часами и минутами. Функции в Elm и в пакетах вроде time-extra сосредоточены на неизменяемости и чистых функциях — это означает отсутствие побочных эффектов. Когда вы рассчитываете новую дату, оригинал остаётся без изменений.

Смотрите также