HEX
Server: nginx/1.24.0
System: Linux localhost 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64
User: www (1000)
PHP: 8.3.27
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/php/83/src/ext/date/tests/date_time_immutable.phpt
--TEST--
Tests for DateTimeImmutable.
--INI--
date.timezone=Europe/London
--FILE--
<?php
$tz = new DateTimeZone("Asia/Tokyo");
$current = "2012-12-27 16:24:08";

function dump($a, $b, $c)
{
    echo 'orig:    ', $a->format('Y-m-d H:i:s e'), "\n";
    echo 'copy:    ', $b->format('Y-m-d H:i:s e'), "\n";
    echo 'changed: ', $c->format('Y-m-d H:i:s e'), "\n";
}

echo "modify():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->modify("+2 days");
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->modify("+2 days");
dump($v, $z, $x);

echo "\nadd():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->add(new DateInterval("P2DT2S"));
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->add(new DateInterval("P2DT2S"));
dump($v, $z, $x);

echo "\nsub():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->sub(new DateInterval("P2DT2S"));
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->sub(new DateInterval("P2DT2S"));
dump($v, $z, $x);

echo "\nsetTimezone():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->setTimezone($tz);
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->setTimezone($tz);
dump($v, $z, $x);
$v = new DateTimeImmutable($current);
$z = $v;
$x = $z->setTimezone($tz);
dump($v, $z, $x);

echo "\nsetTime():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->setTime(5, 7, 19);
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->setTime(5, 7, 19);
dump($v, $z, $x);

echo "\nsetDate():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->setDate(5, 7, 19);
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->setDate(5, 7, 19);
dump($v, $z, $x);

echo "\nsetIsoDate():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->setIsoDate(2012, 2, 6);
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->setIsoDate(2012, 2, 6);
dump($v, $z, $x);

echo "\nsetTimestamp():\n";
$v = date_create_immutable($current);
$z = $v;
$x = $z->setTimestamp(2012234222);
dump($v, $z, $x);
$v = date_create($current);
$z = $v;
$x = $z->setTimestamp(2012234222);
dump($v, $z, $x);
?>
--EXPECT--
modify():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-29 16:24:08 Europe/London
orig:    2012-12-29 16:24:08 Europe/London
copy:    2012-12-29 16:24:08 Europe/London
changed: 2012-12-29 16:24:08 Europe/London

add():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-29 16:24:10 Europe/London
orig:    2012-12-29 16:24:10 Europe/London
copy:    2012-12-29 16:24:10 Europe/London
changed: 2012-12-29 16:24:10 Europe/London

sub():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-25 16:24:06 Europe/London
orig:    2012-12-25 16:24:06 Europe/London
copy:    2012-12-25 16:24:06 Europe/London
changed: 2012-12-25 16:24:06 Europe/London

setTimezone():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-28 01:24:08 Asia/Tokyo
orig:    2012-12-28 01:24:08 Asia/Tokyo
copy:    2012-12-28 01:24:08 Asia/Tokyo
changed: 2012-12-28 01:24:08 Asia/Tokyo
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-28 01:24:08 Asia/Tokyo

setTime():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-12-27 05:07:19 Europe/London
orig:    2012-12-27 05:07:19 Europe/London
copy:    2012-12-27 05:07:19 Europe/London
changed: 2012-12-27 05:07:19 Europe/London

setDate():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 0005-07-19 16:24:08 Europe/London
orig:    0005-07-19 16:24:08 Europe/London
copy:    0005-07-19 16:24:08 Europe/London
changed: 0005-07-19 16:24:08 Europe/London

setIsoDate():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2012-01-14 16:24:08 Europe/London
orig:    2012-01-14 16:24:08 Europe/London
copy:    2012-01-14 16:24:08 Europe/London
changed: 2012-01-14 16:24:08 Europe/London

setTimestamp():
orig:    2012-12-27 16:24:08 Europe/London
copy:    2012-12-27 16:24:08 Europe/London
changed: 2033-10-06 18:57:02 Europe/London
orig:    2033-10-06 18:57:02 Europe/London
copy:    2033-10-06 18:57:02 Europe/London
changed: 2033-10-06 18:57:02 Europe/London