Php 从开始日期开始计算周期性间隔
这就是我所拥有的:Php 从开始日期开始计算周期性间隔,php,dateinterval,Php,Dateinterval,这就是我所拥有的: Start Date (yyyy-mm-dd) Interval : n Interval Type : hour, day, week, month, year 这就是我需要的: 是周期性间隔中的当前时间/日期 Data/Example: Today : 2013-07-16 12:37 Event Data : Start Date : 2012-04-03 12:30 Interval : 2 Interval Type : week
Start Date (yyyy-mm-dd)
Interval : n
Interval Type : hour, day, week, month, year
这就是我需要的:
是周期性间隔中的当前时间/日期
Data/Example:
Today : 2013-07-16 12:37
Event Data :
Start Date : 2012-04-03 12:30
Interval : 2
Interval Type : week
2012年04月03日是星期二。2013-07-16也是如此。如何计算(在PHP中)每一个第二个星期二的重复时间是在今天还是在上星期二
有人吗
编辑:@hek2mgl我是这样做的
/* Check for recurring window is legit */
$interval_string ="P".$mm["mm_reoc_interval"];
switch ($mm["mm_reoc_interval_type"])
{
case 1: $interval_string .= "H"; break;
case 2: $interval_string .= "D"; break;
case 3: $interval_string .= "W"; break;
case 4: $interval_string .= "M"; break;
case 5: $interval_string .= "Y"; break;
}
$start = DateTime::createFromFormat("Y-m-d H:i:s", $mm["mm_reoc_start_date"]." ".$mm["mm_reoc_start_hour"].":00");
$end = DateTime::createFromFormat("Y-m-d H:i:s", $date_time);
$interval = new DateInterval($interval_string);
$occurrences = 3;
$period = new DatePeriod($start,$interval,$end);
foreach($period as $dt){
$date_array[] = $dt->format("Y-m-d");
}
if(in_array($today, $date_array))
{
bla.bla..
}
您可以使用
strotime
你可以这样说:strotime(“+1周”)代码>strotime(“+1个月”)代码>
要相对于当前时间以外的特定时间工作,请将unix epoch time
值传递到strotime
的第二个参数,您可以使用strotime
你可以这样说:strotime(“+1周”)代码>strotime(“+1个月”)代码>
要相对于当前时间以外的特定时间工作,请将unix epoch time
值传递给strotime
的第二个参数。您可以将DateTime
类与以下参数一起使用:
选中此项,查看哪些标识符可用于相对日期时间格式。您可以将日期时间
类与以下内容一起使用:
检查此项以查看哪个标识符可以用于相对日期时间格式。这应该可以实现以下功能:
<?php
$start = "2012-04-03";
$compare = "2013-07-17";
$start_date = new Datetime($start);
$compare_date = new Datetime($compare);
$diff = $start_date->diff($compare_date);
$diff_d = ($diff->days);
$round = (int)($diff_d/14); // 14: every 2nd week!
$diff_d2 = $round * 14;
if (0==$diff_d-$diff_d2) {
echo "<br>Today is the day!";
} else {
$d1 = $start_date->add(new DateInterval ("P" . $diff_d2 . "D"));
echo "Last match was " . $d1->format('Y-m-d');
}
?>
这应该可以做到:
<?php
$start = "2012-04-03";
$compare = "2013-07-17";
$start_date = new Datetime($start);
$compare_date = new Datetime($compare);
$diff = $start_date->diff($compare_date);
$diff_d = ($diff->days);
$round = (int)($diff_d/14); // 14: every 2nd week!
$diff_d2 = $round * 14;
if (0==$diff_d-$diff_d2) {
echo "<br>Today is the day!";
} else {
$d1 = $start_date->add(new DateInterval ("P" . $diff_d2 . "D"));
echo "Last match was " . $d1->format('Y-m-d');
}
?>
手表类(和)
我希望特别有用。观看课程(和)
我希望特别有用。你读过《标准时间》
手册吗?你读过《标准时间》
手册吗?如果我将开始日期设置为:2013-07-09 21:00+1周:今天是2013-07-02 21:00+1周:不是今天,所以它可以看到+1周。但并不是说它会在一周后重复week@osomanden我想你们理解错了(或者问题不清楚)。玩一下我的代码,阅读我链接的手册页面。如果我将开始日期设置为:2013-07-09 21:00+1周,您很快就会看到它是如何工作的:它是今天2013-07-02 21:00+1周:它不是今天,所以它可以看到+1周。但并不是说它会在一周后重复week@osomanden我想你们理解错了(或者问题不清楚)。玩一下我的代码,阅读我链接的手册页面。你很快就会看到它是如何工作的