Lua:
Преобразование даты в строку
Как это сделать:
В Lua мы используем os.date
для форматирования дат в строки. Вот кусочек кода для размышлений.
local now = os.time()
local formatted = os.date("%Y-%m-%d %H:%M:%S", now)
print(formatted)
-- Пример вывода: 2023-04-01 15:24:37
Хотите другой вкус? Настройте шаблон строки.
local friendly_format = os.date("%B %d, %Y")
print(friendly_format)
-- Пример вывода: 01 апреля 2023
Погружение в детали
Функция os.date
в Lua построена по образу и подобию функции POSIX strftime
. Если прищуриться, вы заметите сходство с семейством функций printf
в C - одни корни.
Альтернативы? Конечно. Вы можете заниматься конкатенацией строк и индексацией таблиц — вручную извлекая части даты. Но зачем потеть, когда os.date
справляется с этим?
Детали реализации? Функция os.date
может вести себя двумя способами:
- При наличии строки формата, она возвращает отформатированную дату.
- Если формат опустить, то возвращает таблицу с компонентами даты.
Интересный факт: функции Lua, связанные со временем, используют эпоху в качестве отсчёта — количество секунд с 1 января 1970 года. Эта особенность восходит к Unix-времени.
Смотрите также
- Руководство Lua по
os.date
: https://www.lua.org/manual/5.4/manual.html#pdf-os.date - Спецификаторы формата strftime для приправления
os.date
: http://strftime.org/ - Погружение в Unix-эпоху для любопытных: https://ru.wikipedia.org/wiki/Unix-время