亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP,重復事件使用 unix 時間戳檢查下一個事件

PHP,重復事件使用 unix 時間戳檢查下一個事件

PHP
墨色風雨 2023-08-19 14:29:12
有一個 php 問題,我真的不知道如何解決。我有一個充滿來自 mysql 查詢的 unix 時間戳的數組。這些時間戳是每周重復的事件(例如,每周二和周四)。他們可以重復幾天或只重復一天。知道重復的日子,下一天將是哪一天。例如:在數組中我有:1595289600 --> 2020/07/21(星期二)1595116800 --> 2020/07/19(周日)今天我們的地址是 1595376000(星期三),所以它應該返回 1595116800 + 604800(星期日)。5 天后(下周一)應該返回 1595289600 + 604800 = 1595721600 (第一個周二 + 一周)一周后(下周三),它應該在下周日返回(2020/08/02):1596326400等等...謝謝你!
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

對于您擁有的每個時間戳 - 計算下一個時間戳(添加一周),直到它在當前時間戳之后。然后從那些中返回最低的,因為那個將是最接近現在(但也是將來)的。


假設今天是 2020 年 7 月 22 日星期三。你的 2020-07-21 星期二已經過去了,所以添加一周:2020-07-28 星期二 - 它是未來的,所以它是我們的候選者。你的 2020-07-19 星期日也已經過去了,所以添加一周:2020-07-26 星期日 - 它是未來的,所以它是第二個候選者。


現在從 2 個候選者中選擇較低的:2020-07-26 星期日。


如果日期過去的時間較長,那么您將需要每周更多次。


像這樣的東西:


<?php


// those are your timestamps: $timestamps = [1595289600, 1595116800];

// $time is optional int for when you want to perform the calculation. defaults to current timestamp

function nextOccurence(array $timestamps, $time = null) { 

  $now = $time ?? time();


  $nextTimestamps = [];

  foreach ($timestamps as $timestamp) {

    while ($timestamp < $now) {

      $timestamp += 604800;

    }


    $nextTimestamps[] = $timestamp;

  }


  return min($nextTimestamps);

}


查看完整回答
反對 回復 2023-08-19
  • 1 回答
  • 0 關注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號