dismiss Step into the future! Click here to switch to the beta php.net site
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

date_offset_get> <date_isodate_set
[edit] Last updated: Fri, 28 Jun 2013

view this page in

date_modify

(PHP 5 >= 5.2.0)

date_modifyAlias of DateTime::modify()

Description

This function is an alias of: DateTime::modify()



date_offset_get> <date_isodate_set
[edit] Last updated: Fri, 28 Jun 2013
 
add a note add a note User Contributed Notes date_modify - [4 notes]
up
2
someone
5 years ago
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));

?>
up
0
matthijs at yourmediafactory dot com
5 years ago
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.
up
0
ochojnackiATEMEgmail.com
4 years ago
$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');
            }

?>
up
-1
mike_d_olson [at] yahoo [dot] no-spam
5 years ago
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'));
    }
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites