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 可以在给定日期之后返回一天中的日期和时间吗?的主要内容,如果未能解决你的问题,请参考以下文章
SQL 提取一天中所有未保留的 30 分钟或 60 分钟时间段