date - Lua:获取季度数和季度日
问题描述
我是 Lua 的新手,我正在尝试学习如何在 Lua 中操作日期值。
我有一个数据库,它在 INTEGER 值中有一个 date_id,它从 2000 年 1 月 1 日开始(即 2000 年 1 月 1 日 = 0,2000 年 1 月 2 日 = 1,2000 年 1 月 3 日 = 2 等等)
我如何获得日期的年份将是:
basedate = (os.time{year=2000, month=1, day=1})
lua_dremel_seconds = 86400 --seconds in a day
local function Year(date_id)
local lua_date_id = tostring(date_id) * lua_dremel_seconds
return os.date("%Y", basedate + lua_date_id)
end
我想弄清楚的是两件事:
我应该如何操作该函数以准确获取自 2000 年 1 月 1 日以来日期的季度数?(即 2000 年 1 月 1 日 - 2000 年 3 月 31 日之间的任何 date_id = 0,2000 年 4 月 1 日 - 2000 年 6 月 30 日 = 1 等等)
我应该如何操作该功能以准确获取季度日期?(即 2000 年 1 月 1 日 = 1,2000 年 1 月 2 日 = 2,2000 年 4 月 1 日 = 1,2000 年 4 月 2 日 = 2)
有没有一种简单的方法可以从 basedate+ lua_date_id 算术上得到这个,或者我应该从一个完全不同的思路来思考?
谢谢!
解决方案
function decode_date_id(date_id)
local tm = os.time{year=2000, month=1, day=1+date_id}
local dt = os.date("*t", tm)
local month_q = dt.month - (dt.month - 1)%3
local tm_q = os.time{year=dt.year, month=month_q, day=1}
local q = (month_q-1)/3+(dt.year-2000)*4 -- number of quarter
local q_day = math.floor((tm - tm_q)/86400 + 1.5) -- day of quarter
return dt.year, dt.month, dt.day, q, q_day
end
print(decode_date_id(7825)) --> 2021 6 4 85 65
推荐阅读
- c - 如何编写一个程序,接受用户 F0、F1 和 fmax 的 3 个输入,并输出所有素数斐波那契数?
- javascript - 根文件中的console.log() 上面的导入语句在导入之前不会执行
- python-tesseract - 阅读手写输入以识别学生
- firebase - 是否可以在 Firestore 中运行聚合查询?
- gcc - gcc 汇编器 - 只创建必要的最少指令
- keras - tf 2.0 AttributeError:模块“tensorflow”没有属性“get_default_session”
- javascript - ReactJS 无法映射数组
- php - 重复更新时插入或使用 CASE 的 MariaDB 语法
- javascript - 尝试在 React 组件中的表单中上传 PDF 文件,但在使用 setFormData 时获取 {}
- python - numpy 尝试读取多列二进制文件