Lua日期格式和对比
答
你问几件事情,所以这里是我的答案:
我应该存储在时代的日期?
一般是,存储日期最好的方法是使用时期,由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
这种格式有很多的优势;最明显的是按字母排序的日期也按时间顺序排序。但最重要的一点是,许多软件都准备好读取/使用它。
您可以找到有关Programming in Lua, Section 22.1 - Date and Time并在lua-users wiki日期的信息。
当我想查看日期之间的时间时,os.difftime是我关于它的方式。在lua用户wiki上查找它是一个很好的例子。 – Josh 2012-03-05 03:35:53
@Josh任何推荐我传递的格式?我正在用几种语言定义数据模型。 – chrislovecnm 2012-03-05 08:53:38