[记录]时间处理相关:返回某月的天数

本文提供了一个使用Java编程语言实现的代码片段,用于获取指定月份的最大日期。通过实例化Calendar对象并设置特定年份和月份,我们可以轻松地计算出目标月份内的最大可能日期。

 

已知当前时间now;有一份数据采集截至日期 int dataTime,创建用户到数据截至日已购买月卡次数cnt;当前时间月卡到期时间戳remainTime,月卡周期durationDay=30,月卡天数可叠加 // 数据截至日已购买月卡次数 int cardCnt = PLAYER_VIP_CARD_1_DATA.get(user.getUid()).getCardCount1(); if (cardCnt <= 0) { return null; } String itemId = PAY_REWARD_CONST.card1Compensation; // 月卡周期 int durationDay = CYCLE_CARD_CFG.get(CycleCardType.monthCard1).getDurationDay(); int totalDay = cardCnt * durationDay;// 截至日月卡总天数 // 数据采集的截止日期 int dataTime = 1742504400; // 20250321050000 // 当前月卡到期时间戳 int remainTime = CycleCardControl.getInstance().getRemainTime(user, CycleCardType.monthCard1.name()); // 当前月卡剩余天数 int remainDay = CycleCardControl.getInstance().getRemainDay(user, CycleCardType.monthCard1); // 当前时间 int now = TimeUtils.now(); // 截至日到当前天相差天数 int diffDay = module.util.TimeUtils.differentGameplayDays(dataTime, now, 0); // 假设连续 // 剩余时间戳t = 开始时间k + (购买次数n + 后来购买次数m) * 30 * 86400; // 剩余时间天d = 剩余时间戳t > now ? (剩余时间戳t - now) / 86400 : 0; // 购买总天数 = (购买次数n + 后来购买次数m) * 30; // 截至时间t2 < 当前时间now; // 剩余时间戳t <= 当前时间now: 已过期 持有月卡天数 = 购买次数n * 30 // 剩余时间戳t > 当前时间now: 求解持有月卡天数(截至时间t2 到 当前时间now 之间可能再次购买叠加时间)
最新发布
03-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值