Lua如何根据当前日期对表进行排序
2020-8-28 20:46:53
收藏:0
阅读:132
评论:1
我需要一个以今天的日期作为第一个元素并按此顺序排序所有其他元素的数组。
self.dayw=tonumber(os.date("%w")) --今天的日期
这是我已经实现的数组
self.dayArray[1]=response["星期一"]
self.dayArray[2]=response["星期二"]
self.dayArray[3]=response["星期三"]
self.dayArray[4]=response["星期四"]
self.dayArray[5]=response["星期五"]
self.dayArray[6]=response["星期六"]
self.dayArray[7]=response["星期日"]
因此,如果今天是星期五,我需要该数组从星期五开始作为第一个元素。
我创建了sortArray={}并尝试填充元素,具体取决于当天,但是代码太“繁忙”,可能会有更聪明的解决方案。如果您能帮忙的话,请回复本贴。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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 代码?

每周的每一天都被指定了一个数字,从星期日的
1开始,到星期六的7结束。为了找到当前日期的数字表示,调用os.date("*t"),它会返回一个包含有关当前日期、月份、年份等信息的表。与当前日期数字相对应的字段称为wday。for k, v in pairs(os.date("*t")) do print(k, v) end输出:
year 2020 wday 6 month 8 isdst true hour 21 day 28 sec 13 yday 241 min 48这里,与键
wday相关联的值为6,对应星期五。有了这个数字,您可以通过弹出当前日期之前的元素,然后将它们重新插入到末尾来重新排序天数表。
-- Local references to table functions. local tblins = table.insert local tblrmv = table.remove local days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } local function reorder(days, wday) for i = wday - 1, 1, -1 do -- Pop element days[1] and then append it. tblins(days, tblrmv(days, 1)) end return end local date_table = os.date("*t") reorder(days, date_table.wday) for i, day in ipairs(days) do print(i, day) end输出:
如果您想要一个易于重新启动的版本,这里是我现有解决方案的扩展:
-- Local references to table functions. local tblins = table.insert local tblrmv = table.remove local tblsrt = table.sort -- The field `day' refers to the string representation; `num' refers to the -- given day's original position in the table, which is used to restore the -- table to its starting order. local days = { {day = "Sunday", num = 1}, {day = "Monday", num = 2}, {day = "Tuesday", num = 3}, {day = "Wednesday", num = 4}, {day = "Thursday", num = 5}, {day = "Friday", num = 6}, {day = "Sunday", num = 7} } local function sort_days(left_day, right_day) return left_day.num < right_day.num end -- The reorder function remains the same -- To put the days table back in its original order, call the following: tblsrt(days, sort_days) for i, day in ipairs(days) do print(i, day.day, day.num) end输出: