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 - это не регулярные выражения; оно проще, и иногда это означает немного больше работы для разбора сложных форматов дат. Всегда тщательно тестируйте свои шаблоны!
См. также
- Руководство по Lua 5.4 для
os.time
и сопоставления с образцом: https://www.lua.org/manual/5.4/ - Документация библиотеки Penlight: https://stevedonovan.github.io/Penlight/api/
- Библиотека date.lua на GitHub для специализированного решения разбора дат: https://github.com/Tieske/date