你问几件事情,所以这里是我的答案:
我应该存储在时代的日期?
一般是,存储日期最好的方法是使用时期,由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
这种格式有很多的优势;最明显的是按字母排序的日期也按时间顺序排序。但最重要的一点是,许多软件都准备好读取/使用它。