Вы спрашиваете несколько вещей, поэтому вот мои ответы:
Должен ли я хранить даты в эпоху?
В общем, да, лучший способ сохранить даты - использовать эпохи, возвращаемые os.time
Как вы сравниваетедаты с lua?
Это зависит от того, как вы хотите «сравнить» их.
Если вы просто хотите узнать, какой из них старше / старше, то самая быстрая самая быстрая вещьсохраняя их как "эпохи" и затем делая date1 < date2
;поскольку обе даты являются просто числами, они являются и производительными, и чистыми.
Если вы хотите узнать, сколько месяцев / дней / лет прошло между двумя указанными датами, это немного сложнее.Вам понадобится код, подобный следующему:
diff = os.date("*t", os.difftime(date1, date2))
В этом примере возвращаемая diff
является таблицей, аналогичной {year=1, month=5, day=1, hour=2, min=3, sec=40 ...}
Я ищу производительность...
Если вы слишком часто используете os.date()
для преобразования эпох в даты (например, для печати), то вам может потребоваться «кэшировать» информацию о году, месяце и т. Д. В таблицетак что вам не придется звонить снова и снова.Но делайте это, только если у вас плохая работа; без предварительной оптимизации .
Какой формат строки подходит для дат?
Это полностью зависит от того, как вы хотите их использовать,Например, если ваше приложение взаимодействует с другой службой, которая ожидает определенный формат даты, имеет смысл использовать этот формат во всех ваших приложениях.
Если у вас нет особой необходимости использовать формат, тогда один кандидат(%x
):
os.date("%x", date) -- 09/16/1998 (for example)
Строка, которую вы получите, зависит от локали компьютера.Это может быть или не быть желательным.
Если вы хотите, чтобы представление было одинаковым на всех компьютерах, независимо от их локали, вы можете попробовать использовать стандартный формат, например ISO 8601 :
os.date("%Y-%m-%d", date) -- returns "1998-09-16" in all computers
Этот формат имеет много преимуществ;наиболее очевидным является то, что даты, отсортированные в алфавитном порядке, также отсортированы в хронологическом порядке.Но самое важное то, что многие программы готовы их прочитать / использовать.
Более подробную информацию о датах можно найти в Программирование в Lua, Раздел 22.1 - Дата и время и в lua-users wiki .