PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

date_offset_get> <date_isodate_set
Last updated: Fri, 10 Oct 2008

view this page in

date_modify

(PHP 5 >= 5.1.0)

date_modifyAlters the timestamp

Description

void date_modify ( DateTime $object , string $modify )
void DateTime::modify ( string $modify )

Parameters

object

DateTime object.

modify

String in a relative format accepted by strtotime().

Return Values

Returns NULL on success or FALSE on failure.

Examples

Example #1 A date_modify() example

<?php
$date 
= new DateTime("2006-12-12");
$date->modify("+1 day");
echo 
$date->format("Y-m-d");
?>

The above example will output:

2006-12-13

See Also



date_offset_get> <date_isodate_set
Last updated: Fri, 10 Oct 2008
 
add a note add a note User Contributed Notes
date_modify
ochojnackiATEMEgmail.com
14-Aug-2008 03: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');
            }

?>
matthijs at yourmediafactory dot com
08-Dec-2007 02:38
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.
someone
15-Sep-2007 09:46
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));

?>
mike_d_olson [at] yahoo [dot] no-spam
09-Aug-2007 02:17
I had problems with setting an existing DateTime object to an exact Unix timestamp using modify("@$timestamp"), which seems to always be relative.  So I wrote this function, which does the trick:

<?php
   
function set_time(DateTime $dt, $timestamp)
    {
       
$tzo = new DateTimeZone($dt->getTimezone()->getName());
       
$new_dt = new DateTime("@$timestamp", new DateTimeZone('UTC'));
       
$new_dt->setTimezone($tzo);
       
$dt->setDate($new_dt->format('Y'), $new_dt->format('m'), $new_dt->format('d'));
       
$dt->setTime($new_dt->format('H'), $new_dt->format('i'), $new_dt->format('s'));
    }
?>

date_offset_get> <date_isodate_set
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites