Lua日期格式和比较

时间:2012-03-05 00:10:57

标签: lua

你如何比较卢阿的日期?日期的最佳字符串格式是什么?我应该把日期存储在纪元吗?我正在寻找表现......

os.difftime是最好的方法吗?

1 个答案:

答案 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 Timelua-users wiki中找到有关日期的更多信息。

相关问题