strtotime可以返回给定日期之后的日期和时间



我正在使用PHP生成循环日期来处理日期。我有一个startDateTime和endDateTime。这两个变量用于系列中的第一个日期。

如果偶数每周二重复,则需要在

的行中添加一些内容
 $repeatDay = "Tuesday";
 $followingDay = strtotime($startDateTime. " following $repeatDay");

使用"next $repeatDay"不起作用,因为我没有从今天的日期生成日期。

编辑:

似乎每五个循环一次,时间就向前跳一个小时。这可能是因为$start="2014-04-29 11:00:00"和strtotime只正确地转换日期。

如何将2014-04-29 11:00:00转换为strtotime可以理解的格式?

 $firstOccurrence=strtotime($start);
 $nextOccurence=strtotime("next $day", $firstOccurrence); //Set the first recurring date for this day
 while($nextOccurence<=strtotime($activeUntil)){
      echo date("M d, Y H:m:i",$nextOccurence)." | ";
      $nextOccurence=strtotime("next $day", $nextOccurence); 
 } 

也许是时候开始使用DateTime了?修改日期非常复杂。例如,从$start创建日期时间如下所示:

$start="2014-04-29 11:00:00";
$dateTime=DateTime::createFromFormat("Y-m-d H:m:i", $start);

因为你有$dateTime,你可以把它修改一天:

$dateTime->modify('+1 day');
//or just
$dateTime->modify('next tuesday');
//and return it as string
echo $dateTime->format("M d, Y H:m:i");

DateTime理解strtotime所做的一切,因此它可以改进您的解决方案。你自己试试吧,如果有帮助的话告诉我。

strtotime()可接受2个参数。第一个是字符串,第二个是基本时间戳。

尝试以下操作:

// Assuming $startDateTime is a timestamp.
$followingDay = strtotime("next $repeatDay", $startDateTime);

相关内容

  • 没有找到相关文章

最新更新