当前位置: 首页 > news >正文

lua 计算第几周

需求

计算当前赛季的开始和结束日期,2024年1月1日周一是第1周的开始,每两周是一个赛季。

lua代码

没有处理时区问题

local const = 24 * 60 * 60 --一整天的时间戳
local server_time = 1716595200--todo:修改服务器时间
local date = os.date("*t", server_time) -- 服务器当前时间对应的日期
local first_day_of_2024 = os.time({ year = 2024, month = 1, day = 1 })
-- os.date()返回的数据里周日才是一周的开始,即 wday = 1,而我需要的是周一才
-- 是一周的开始,所以做了处理
local week_day = date.wday - 1
if week_day <= 0 thenweek_day = 7
end
local total_time_stamps = server_time - first_day_of_2024
local days = math.ceil(total_time_stamps / const) -- 计算当前是第几天
-- 第几周,或者 math.ceil((days + (7 - week_day)) / 7),原理是凑完整的一周
local weeks = math.ceil(days / 7)
local diff_time = 0
if weeks % 2 == 0 thendiff_time = 7 * const
end
local start_time_stamps = os.time({ year = date.year, month = date.month, day = date.day }) - week_day * const + 1 * const - diff_time
local start_date = os.date("*t", start_time_stamps) -- 得到开始日期
local end_time_stamps = start_time_stamps + 2 * 7 * const - const
local end_date = os.date("*t", end_time_stamps) -- 得到结束日期

当前时间是2024.5.25,得到的赛季时间是5.20到6.2.
在这里插入图片描述

相关文章:

  • Geotools--生成等值线
  • 【微服务】安装docker以及可视化界面
  • R可视化:可直接发表的柱状图
  • 开源远程协助:分享屏幕,隔空协助!
  • maven聚合工程整合springboot+mybatisplus遇到的问题
  • 全球首个,985重大突破!
  • day42 62.不同路径 63. 不同路径 II
  • Jenkins 自动化部署
  • 微服务项目搭建之技术选型
  • JavaSE(入门)
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.04.25-2024.05.01
  • 【C语言实现TCP通信】
  • linux文件编程api: creat
  • 服务案例|网络攻击事件的排查与修复
  • QLExpress入门及实战总结
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【知识碎片】第三方登录弹窗效果
  • Javascript 原型链
  • MD5加密原理解析及OC版原理实现
  • quasar-framework cnodejs社区
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SSH 免密登录
  • unity如何实现一个固定宽度的orthagraphic相机
  • Wamp集成环境 添加PHP的新版本
  • 安卓应用性能调试和优化经验分享
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于Java中分层中遇到的一些问题
  • 简单基于spring的redis配置(单机和集群模式)
  • 那些年我们用过的显示性能指标
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 深入浅出webpack学习(1)--核心概念
  • 双管齐下,VMware的容器新战略
  • 微服务入门【系列视频课程】
  • 协程
  • 智能合约开发环境搭建及Hello World合约
  • 阿里云服务器如何修改远程端口?
  • (55)MOS管专题--->(10)MOS管的封装
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (办公)springboot配置aop处理请求.
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)opengl函数加载和错误处理
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)甲方乙方——赵民谈找工作
  • (转)重识new
  • .apk 成为历史!
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .htaccess 强制https 单独排除某个目录
  • .net CHARTING图表控件下载地址
  • .NET Standard 的管理策略
  • .net(C#)中String.Format如何使用
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net8 Blazor 尝鲜
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET开发人员必知的八个网站