按日期增长的Counter实现咨询:初始值1000每日固定递增2如何实现
按日固定增量计数器实现方案
核心计算逻辑
当前计数器值 = 初始值 + (当前日期 - 初始设置日期)的天数差 × 每日增量
对应需求参数:初始值固定为1000,每日增量固定为2,无需每日触发累加操作,直接通过日期差计算即可得到结果,稳定性远高于定时任务累加方案,不会因服务中断、定时任务漏执行导致数值错误。
方案1:纯前端静态实现(无需后端、无需数据库)
适合直接嵌入网页使用,无需维护服务资源,开箱即用:
<script> // 自定义配置参数 const INIT_VALUE = 1000; // 固定初始值 const DAILY_STEP = 2; // 固定每日增量 const INIT_DATE = new Date('2024-01-01'); // 替换为你正式启动计数器的日期 function getCurrentCount() { const now = new Date(); // 计算天数差,取整处理时区误差 const diffTime = Math.abs(now - INIT_DATE); const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)); return INIT_VALUE + diffDays * DAILY_STEP; } // 调用示例,可将结果渲染到页面指定位置 console.log(getCurrentCount()); </script>
方案2:服务端持久化实现(支持多端同步、防篡改)
如果需要对外提供接口、多端同步数据,可采用该方案:
- 数据库新增3个固定字段存储配置:
init_value存1000、daily_step存2、init_date存计数器启动日期 - 接口查询逻辑和上述前端计算逻辑完全一致,收到请求时当场计算结果返回,无需运行定时任务
- 若业务要求必须存储实时数值,可新增每日0点触发的定时任务,执行
update counter set current_value = current_value + 2即可,额外增加幂等判断避免重复执行累加错误
方案3:本地离线脚本实现(Python示例)
仅个人本地使用时可直接运行脚本获取数值:
from datetime import date INIT_VALUE = 1000 DAILY_STEP = 2 INIT_DATE = date(2024, 1, 1) # 替换为计数器启动日期 def get_current_count(): diff_days = (date.today() - INIT_DATE).days return INIT_VALUE + diff_days * DAILY_STEP if __name__ == "__main__": print(get_current_count())
内容的提问来源于stack exchange,提问作者Gintautas Bružas
相关产品推荐
相关产品推荐

