php如何判断27,28,29,30,1,2,3,5类似这样的一串日期是否连续,需要处理好跨年跨月闰月的问题?

开发一个签到模块,签到周期为30天,现有需求连续签到多少天后有奖励可以领取,如果中间有一天断签,则记连续签到从0开始,每30天算一个周期,如何判断是否连续,并判断连续的时长满不满足要求

largeQ
浏览 672回答 6
6回答

白板的微信

不能换一种思路吗? 比如单独设计一个 XX签到表 字段:id-uid-time 用户签到动作时: 今天是否已签到过? Y -> false; 签到。(写入一条新数据到库中) 判断是否连续 X 天签到? Y -> 发放奖励。 至于如何判断连续 7 天签到,我这提供一个思路,仅供参考:判断用户签到表中最近 7 条数据是否均为 7 天内的数据。哈哈逃(其实是可行的)。 // 获取7天前的凌晨的时间戳 $seven_days_ago = strtotime('-7 days'); $seven_days_ago = mktime(0, 0, 0, date('m', $seven_days_ago), date('d', $seven_days_ago), date('Y', $seven_days_ago)); echo $seven_days_ago; 所以,重点还是思路。。。

扬帆大鱼

将相邻的日期换算成格林尼治毫秒数相减 如果等于86400000说明连着打卡了 大于说明中断

UYOU

签到的时候拿出上一次签到的日期 如果是昨天以前肯定断了如果是昨天,今天签到,那就接上了 另外数据表新增一个连续签到天数,只要没断,就在上次的基础上加1,断了就重新来

手掌心

只需把上次签到和本次签到的日期对比一下就可以了吧。

小怪兽爱吃肉

date_diff可以得出两个日期相距的天数,将之与大于某个日期的打卡次数比较,就知道这段日期内是否有打满卡

PIPIONE

在做签到累加的时候就做判断,当前签到的日期是不是最后签到日期+1,如果是那就做累加,不是就重置为0至于如何判断“当前签到的日期等于最后签到日期+1”,给你个示例代码: $lastDateHistory = '2012-02-29'; // 假设这是从记录中取出的最后一次签到日期 $currentDate = '2012-03-01'; // 手动假写当前日期,实际应该等于 date('Y-m-d'); echo date('Y-m-d',strtotime("$currentDate -1 day")); // 返回值是当前日期的前一天
打开App,查看更多内容
随时随地看视频慕课网APP