你如何比较卢阿的日期?日期的最佳字符串格式是什么?我应该把日期存储在纪元吗?我正在寻找表现......
os.difftime是最好的方法吗?
答案 0 :(得分:11)
你问了几件事,所以这是我的答案:
我应该在纪元中存储日期吗?
一般来说,存储日期的最佳方法是使用os.time
返回的纪元如何将日期与lua进行比较?
这取决于你想要“比较”它们的方式。
如果您只想知道哪一个更新/更老,那么最简单的方法就是将它们存储为“epochs”然后再进行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
这种格式有很多优点;最明显的一个是按字母顺序排序的日期也按时间顺序排序。但最重要的是,很多软件都准备好阅读/使用它。
您可以在Programming in Lua, Section 22.1 - Date and Time和lua-users wiki中找到有关日期的更多信息。