在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  PHP/ php如何判斷27,28,29,30,1,2,3,5類似這樣的一串日期是否連續(xù),

php如何判斷27,28,29,30,1,2,3,5類似這樣的一串日期是否連續(xù),需要處理好跨年跨月閏月的問題?

開發(fā)一個簽到模塊,簽到周期為30天,現(xiàn)有需求連續(xù)簽到多少天后有獎勵可以領取,如果中間有一天斷簽,則記連續(xù)簽到從0開始,每30天算一個周期,如何判斷是否連續(xù),并判斷連續(xù)的時長滿不滿足要求

回答
編輯回答
哚蕾咪

date_diff可以得出兩個日期相距的天數(shù),將之與大于某個日期的打卡次數(shù)比較,就知道這段日期內是否有打滿卡

2018年8月29日 20:29
編輯回答
墨小羽

不能換一種思路嗎?

比如單獨設計一個 XX簽到表
字段:id-uid-time

用戶簽到動作時:

  1. 今天是否已簽到過? Y -> false;
  2. 簽到。(寫入一條新數(shù)據(jù)到庫中)
  3. 判斷是否連續(xù) X 天簽到? Y -> 發(fā)放獎勵。

至于如何判斷連續(xù) 7 天簽到,我這提供一個思路,僅供參考:
判斷用戶簽到表中最近 7 條數(shù)據(jù)是否均為 7 天內的數(shù)據(jù)。哈哈逃(其實是可行的)。

    // 獲取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;

所以,重點還是思路。。。

2018年7月5日 17:57
編輯回答
真難過

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

2017年11月6日 11:27
編輯回答
呆萌傻

在做簽到累加的時候就做判斷,當前簽到的日期是不是最后簽到日期+1,如果是那就做累加,不是就重置為0
至于如何判斷“當前簽到的日期等于最后簽到日期+1”,給你個示例代碼:

$lastDateHistory = '2012-02-29'; // 假設這是從記錄中取出的最后一次簽到日期
$currentDate = '2012-03-01'; // 手動假寫當前日期,實際應該等于 date('Y-m-d');
echo date('Y-m-d',strtotime("$currentDate -1 day")); // 返回值是當前日期的前一天

2017年11月29日 01:58
編輯回答
爆扎

將相鄰的日期換算成格林尼治毫秒數(shù)相減 如果等于86400000說明連著打卡了 大于說明中斷

2018年4月5日 13:11
編輯回答
擱淺

簽到的時候拿出上一次簽到的日期

如果是昨天以前肯定斷了
如果是昨天,今天簽到,那就接上了

另外數(shù)據(jù)表新增一個連續(xù)簽到天數(shù),只要沒斷,就在上次的基礎上加1,斷了就重新來

2017年6月28日 22:11