Elixir:
Расчет даты в будущем или прошлом
Как:
Используя встроенный в Elixir модуль Date
, вы можете легко оперировать временем.
# Добавить или отнять от заданной даты
date_today = ~D[2023-04-15]
{year, month, day} = date_today
# Расчёт даты через 10 дней в будущем
date_future = Date.add(date_today, 10)
IO.inspect(date_future) # => ~D[2023-04-25]
# Расчёт даты 30 дней назад
date_past = Date.add(date_today, -30)
IO.inspect(date_past) # => ~D[2023-03-16]
Обратите внимание, как Date.add/2
просто берёт число дней, на которое вы хотите путешествовать во временном континууме.
Подробнее
Способность вычислять даты в будущем или прошлом не является новинкой. Исторические языки программирования тоже имели свои методы — подумайте о COBOL или FORTRAN. Однако Elixir привносит функциональный колорит и неизменяемость данных на стол, делая расчёты дат простыми и менее подверженными ошибкам.
Альтернативы? Вы могли бы вручную рассчитывать, добавляя секунды, минуты и так далее, но зачем изобретать велосипед, если Elixir предлагает надёжный модуль Date
? Особенно учитывая, что временные расчёты могут быть сложными с учётом високосных лет, часовых поясов и изменений, связанных с переходом на летнее время.
Детали реализации заключаются в понимании модуля :calendar
в Elixir и соответствующих реализаций на Erlang. Мы стоим на плечах эпох эволюции функционала даты и времени, при этом синтаксический сахар Elixir делает всё это ещё приятнее.
Смотрите также
- Официальная документация модуля
Date
в Elixir: https://hexdocs.pm/elixir/Date.html - “Дата, время и часовые пояса в Elixir”: Статья, глубоко исследующая способности Elixir к работе со временем.
- Документация модуля
:calendar
в Erlang: http://erlang.org/doc/apps/erts/calendar.html