strtotime 可以在给定日期之后返回一天中的日期和时间吗?

Posted

技术标签:

【中文标题】strtotime 可以在给定日期之后返回一天中的日期和时间吗?【英文标题】:Can strtotime return the date and time of a day AFTER a given date? 【发布时间】:2014-03-20 16:19:47 【问题描述】:

我正在使用 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); 
  

【问题讨论】:

总是星期二吗? $startDateTime 的一些示例值是什么?我有点不清楚你的意见是什么。 如果活动在周二举行并且每周二重复,请尝试"$start + 1 week"。否则你能澄清一下吗?也许显示您想要从哪个输入匹配的日期。 【参考方案1】:

也许是时候开始使用 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 所做的一切,因此它可以改进您的解决方案。自己尝试一下,如果有帮助,请告诉我。

【讨论】:

【参考方案2】:

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

尝试以下方法:

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

【讨论】:

谢谢,这绝对是解决方案。但是,似乎在一段时间内,我的开始时间已经增加了几个小时。 $firstOccurrence=strtotime($start); $nextOccurence=strtotime("下一个 $day", $firstOccurrence); //设置这一天的第一个重复日期 while($nextOccurence

以上是关于strtotime 可以在给定日期之后返回一天中的日期和时间吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP - strtotime,指定时区

SQL 提取一天中所有未保留的 30 分钟或 60 分钟时间段

Javascript中的日期差异(忽略一天中的时间)

获取“一天中的第几周”?

DateTimePicker - 如何将时间间隔设置为 20 分钟、一周中允许的特定日期和一天中的时间?

如何将包含日期时间的 DataFrame 列拆分为两列:一列包含日期,另一列包含一天中的时间?