date_time_immutable.phpt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. --TEST--
  2. Tests for DateTimeImmutable.
  3. --INI--
  4. date.timezone=Europe/London
  5. --FILE--
  6. <?php
  7. $tz = new DateTimeZone("Asia/Tokyo");
  8. $current = "2012-12-27 16:24:08";
  9. function dump($a, $b, $c)
  10. {
  11. echo 'orig: ', $a->format('Y-m-d H:i:s e'), "\n";
  12. echo 'copy: ', $b->format('Y-m-d H:i:s e'), "\n";
  13. echo 'changed: ', $c->format('Y-m-d H:i:s e'), "\n";
  14. }
  15. echo "modify():\n";
  16. $v = date_create_immutable($current);
  17. $z = $v;
  18. $x = $z->modify("+2 days");
  19. dump($v, $z, $x);
  20. $v = date_create($current);
  21. $z = $v;
  22. $x = $z->modify("+2 days");
  23. dump($v, $z, $x);
  24. echo "\nadd():\n";
  25. $v = date_create_immutable($current);
  26. $z = $v;
  27. $x = $z->add(new DateInterval("P2DT2S"));
  28. dump($v, $z, $x);
  29. $v = date_create($current);
  30. $z = $v;
  31. $x = $z->add(new DateInterval("P2DT2S"));
  32. dump($v, $z, $x);
  33. echo "\nsub():\n";
  34. $v = date_create_immutable($current);
  35. $z = $v;
  36. $x = $z->sub(new DateInterval("P2DT2S"));
  37. dump($v, $z, $x);
  38. $v = date_create($current);
  39. $z = $v;
  40. $x = $z->sub(new DateInterval("P2DT2S"));
  41. dump($v, $z, $x);
  42. echo "\nsetTimezone():\n";
  43. $v = date_create_immutable($current);
  44. $z = $v;
  45. $x = $z->setTimezone($tz);
  46. dump($v, $z, $x);
  47. $v = date_create($current);
  48. $z = $v;
  49. $x = $z->setTimezone($tz);
  50. dump($v, $z, $x);
  51. $v = new DateTimeImmutable($current);
  52. $z = $v;
  53. $x = $z->setTimezone($tz);
  54. dump($v, $z, $x);
  55. echo "\nsetTime():\n";
  56. $v = date_create_immutable($current);
  57. $z = $v;
  58. $x = $z->setTime(5, 7, 19);
  59. dump($v, $z, $x);
  60. $v = date_create($current);
  61. $z = $v;
  62. $x = $z->setTime(5, 7, 19);
  63. dump($v, $z, $x);
  64. echo "\nsetDate():\n";
  65. $v = date_create_immutable($current);
  66. $z = $v;
  67. $x = $z->setDate(5, 7, 19);
  68. dump($v, $z, $x);
  69. $v = date_create($current);
  70. $z = $v;
  71. $x = $z->setDate(5, 7, 19);
  72. dump($v, $z, $x);
  73. echo "\nsetIsoDate():\n";
  74. $v = date_create_immutable($current);
  75. $z = $v;
  76. $x = $z->setIsoDate(2012, 2, 6);
  77. dump($v, $z, $x);
  78. $v = date_create($current);
  79. $z = $v;
  80. $x = $z->setIsoDate(2012, 2, 6);
  81. dump($v, $z, $x);
  82. echo "\nsetTimestamp():\n";
  83. $v = date_create_immutable($current);
  84. $z = $v;
  85. $x = $z->setTimestamp(2012234222);
  86. dump($v, $z, $x);
  87. $v = date_create($current);
  88. $z = $v;
  89. $x = $z->setTimestamp(2012234222);
  90. dump($v, $z, $x);
  91. ?>
  92. --EXPECT--
  93. modify():
  94. orig: 2012-12-27 16:24:08 Europe/London
  95. copy: 2012-12-27 16:24:08 Europe/London
  96. changed: 2012-12-29 16:24:08 Europe/London
  97. orig: 2012-12-29 16:24:08 Europe/London
  98. copy: 2012-12-29 16:24:08 Europe/London
  99. changed: 2012-12-29 16:24:08 Europe/London
  100. add():
  101. orig: 2012-12-27 16:24:08 Europe/London
  102. copy: 2012-12-27 16:24:08 Europe/London
  103. changed: 2012-12-29 16:24:10 Europe/London
  104. orig: 2012-12-29 16:24:10 Europe/London
  105. copy: 2012-12-29 16:24:10 Europe/London
  106. changed: 2012-12-29 16:24:10 Europe/London
  107. sub():
  108. orig: 2012-12-27 16:24:08 Europe/London
  109. copy: 2012-12-27 16:24:08 Europe/London
  110. changed: 2012-12-25 16:24:06 Europe/London
  111. orig: 2012-12-25 16:24:06 Europe/London
  112. copy: 2012-12-25 16:24:06 Europe/London
  113. changed: 2012-12-25 16:24:06 Europe/London
  114. setTimezone():
  115. orig: 2012-12-27 16:24:08 Europe/London
  116. copy: 2012-12-27 16:24:08 Europe/London
  117. changed: 2012-12-28 01:24:08 Asia/Tokyo
  118. orig: 2012-12-28 01:24:08 Asia/Tokyo
  119. copy: 2012-12-28 01:24:08 Asia/Tokyo
  120. changed: 2012-12-28 01:24:08 Asia/Tokyo
  121. orig: 2012-12-27 16:24:08 Europe/London
  122. copy: 2012-12-27 16:24:08 Europe/London
  123. changed: 2012-12-28 01:24:08 Asia/Tokyo
  124. setTime():
  125. orig: 2012-12-27 16:24:08 Europe/London
  126. copy: 2012-12-27 16:24:08 Europe/London
  127. changed: 2012-12-27 05:07:19 Europe/London
  128. orig: 2012-12-27 05:07:19 Europe/London
  129. copy: 2012-12-27 05:07:19 Europe/London
  130. changed: 2012-12-27 05:07:19 Europe/London
  131. setDate():
  132. orig: 2012-12-27 16:24:08 Europe/London
  133. copy: 2012-12-27 16:24:08 Europe/London
  134. changed: 0005-07-19 16:24:08 Europe/London
  135. orig: 0005-07-19 16:24:08 Europe/London
  136. copy: 0005-07-19 16:24:08 Europe/London
  137. changed: 0005-07-19 16:24:08 Europe/London
  138. setIsoDate():
  139. orig: 2012-12-27 16:24:08 Europe/London
  140. copy: 2012-12-27 16:24:08 Europe/London
  141. changed: 2012-01-14 16:24:08 Europe/London
  142. orig: 2012-01-14 16:24:08 Europe/London
  143. copy: 2012-01-14 16:24:08 Europe/London
  144. changed: 2012-01-14 16:24:08 Europe/London
  145. setTimestamp():
  146. orig: 2012-12-27 16:24:08 Europe/London
  147. copy: 2012-12-27 16:24:08 Europe/London
  148. changed: 2033-10-06 18:57:02 Europe/London
  149. orig: 2033-10-06 18:57:02 Europe/London
  150. copy: 2033-10-06 18:57:02 Europe/London
  151. changed: 2033-10-06 18:57:02 Europe/London