Lua日期格式和比较
2012-3-5 0:10:57
收藏:0
阅读:94
评论:1
如何使用 Lua 比较日期?哪种日期的字符串格式最好?我应该将日期存储在Epoch格式中吗?我正在寻找性能最佳的方法...
最佳方法是使用 os.difftime
吗?
原文链接 https://stackoverflow.com/questions/9560142
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你问了几件事情,这里是我的答案:
一般来说,最好的存储方式是使用 os.time 返回的时期间来存储日期。
这取决于你想如何 “比较” 它们。
如果你只想知道哪一个比较新/旧,那么最简单、最快捷的方法是将它们存储为“时期间”,然后执行
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(例如)
返回的字符串取决于计算机的区域设置。这可能是不希望的。
如果你希望在所有计算机上独立于其区域设置,表示方式都相同,你可能想尝试一种标准格式,例如 ISO 8601:
os.date("%Y-%m-%d", date) -- 在所有计算机上返回 "1998-09-16"
这种格式有很多优点;最显而易见的是,按字母顺序排序的日期也按时间顺序排序。但最重要的优点是,很多软件都准备好读取/使用它。
你可以在 Programming in Lua,第 22.1 节 - 日期和时间 和 lua-users wiki 中找到更多有关日期的信息。