©
本文档使用 PHP中文网手册 发布
(PHP 5 >= 5.2.0, PHP 7)
date_modify — 别名 DateTime::modify()
此函数是该函数的别名: DateTime::modify()
[#1] ochojnackiATEMEgmail.com [2008-08-14 05:49:49]
$cday - specified day of the week (0-6 where 0 is Sunday)
$currentDate - date of start
$endDate - date of end
We need dates of next couple of days, that day of week match defined.
<?php
if($currentDate->format('w')!= $cday){
switch ($cday){
case 0 : $cdays="Sunday"; break;
case 1 : $cdays="Monday"; break;
case 2 : $cdays="Tuesday"; break;
case 3 : $cdays="Wednesday"; break;
case 4 : $cdays="Thursday"; break;
case 5 : $cdays="Friday"; break;
case 6 : $cdays="Saturday";
}
date_modify($currentDate,"+1 {$cdays}");
}
while($currentDate < $endDate) {
echo $currentDate -> format('Y-m-d H:i:s');
$currentDate -> modify('+1 week');
}
?>
[#2] matthijs at yourmediafactory dot com [2007-12-08 04:38:44]
I have trouble finding the documentation for the dateTime object, but this seems to work:
<?php
$currentDate = new DateTime('2008-01-04');
$endDate = new DateTime('2009-01-04');
while($currentDate < $endDate) {
echo $currentDate -> format('Y-m-d') . ' till ';
$currentDate -> modify('+1 week');
echo $currentDate -> format('Y-m-d') . ' <br />';
}
?>
This will (obviously) print a list of date-ranges between startdate and enddate.
[#3] someone [2007-09-14 23:46:58]
I decided to enhance the DateTime object by taking advantage of method chaining.
<?php
class DateTimeChain extends DateTime {
public function modify ($modify) {
parent::modify($modify);
return $this;
}
public function setDate ($year, $month, $day) {
parent::setDate($year, $month, $day);
return $this;
}
public function setISODate ($year, $week, $day = null) {
parent:: setISODate($year, $week, $day);
return $this;
}
public function setTime ($hour, $minute, $second = null) {
parent::setTime($hour, $minute, $second);
return $this;
}
public function setTimezone ($timezone) {
parent::setTimezone($timezone);
return $this;
}
}
$t = new DateTimeZone('America/Los_Angeles');
$d = new DateTimeChain();
var_dump($d->setTimezone($t)->modify('5years')->format(DATE_RFC822));
?>