Анализ даты из строки

Lua:
Анализ даты из строки

Как:

Lua не имеет встроенного парсера дат, но вы можете справиться с задачей с помощью os.time и сопоставления с образцом. Допустим, у вас есть строка с датой date_str, и вы хотите преобразовать её в таблицу, с которой может работать Lua:

local date_str = "2023-04-05" -- формат ISO 8601
local pattern = "(%d+)-(%d+)-(%d+)"
local year, month, day = date_str:match(pattern)
local date_table = {year = year, month = month, day = day}

print(os.time(date_table)) -- Пример вывода: 1679785200

И вот ваша дата, разобранная и готовая к использованию!

Подробнее

Lua довольно минималистична, поэтому для разбора дат часто приходится находить собственное решение или использовать библиотеку. Исторически обработка дат в Lua была в основном ручной, с использованием сопоставления строковых шаблонов и функций os.date и os.time.

Если вы не хотите изобретать велосипед, обратите внимание на библиотеки, такие как Penlight или date.lua. Они предоставляют больше гибкости и возможностей при работе с датами.

Что касается реализации, помните, что сопоставление образцов в Lua - это не регулярные выражения; оно проще, и иногда это означает немного больше работы для разбора сложных форматов дат. Всегда тщательно тестируйте свои шаблоны!

См. также