bug20382-2.phpt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. --TEST--
  2. Bug #20382 [2] (strtotime ("Monday", $date) produces wrong result on DST changeover)
  3. --FILE--
  4. <?php
  5. $tests = array(
  6. array("Europe/Andorra", 17, 17, 17, 1, 24764, 1970),
  7. array("Asia/Dubai", 17, 17, 17, 1, 1, 1970),
  8. array("Asia/Kabul", 17, 17, 17, 1, 1, 1970),
  9. array("America/Antigua", 17, 17, 17, 1, 1, 1970),
  10. array("America/Anguilla", 17, 17, 17, 1, 1, 1970),
  11. array("Europe/Tirane", 17, 17, 17, 1, 4849, 1970),
  12. array("Asia/Yerevan", 17, 17, 17, 1, 24764, 1970),
  13. array("America/Curacao", 17, 17, 17, 1, 1, 1970),
  14. array("Africa/Luanda", 17, 17, 17, 1, 1, 1970),
  15. array("Antarctica/McMurdo", 17, 17, 17, 1, 24743, 1970),
  16. array("Australia/Adelaide", 17, 17, 17, 1, 1, 1971),
  17. array("Australia/Darwin", 17, 17, 17, 1, 88, 1971),
  18. array("Australia/Perth", 17, 17, 17, 1, 1, 1971),
  19. array("America/Aruba", 17, 17, 17, 1, 88, 1971),
  20. array("Asia/Baku", 17, 17, 17, 1, 1, 1971),
  21. array("Europe/Sarajevo", 17, 17, 17, 1, 1, 1971),
  22. array("America/Barbados", 17, 17, 17, 1, 1, 1971),
  23. array("Asia/Dacca", 17, 17, 17, 1, 1, 1971),
  24. array("Europe/Brussels", 17, 17, 17, 1, 1, 1971),
  25. array("Africa/Ouagadougou", 17, 17, 17, 1, 88, 1971),
  26. array("Europe/Tirane", 17, 17, 17, 1, 4849, 1970),
  27. array("America/Buenos_Aires", 17, 17, 17, 1, 1734, 1970),
  28. array("America/Rosario", 17, 17, 17, 1, 1734, 1970),
  29. array("Europe/Vienna", 17, 17, 17, 1, 3743, 1970),
  30. array("Asia/Baku", 17, 17, 17, 1, 9490, 1970),
  31. );
  32. foreach ($tests as $test) {
  33. date_default_timezone_set($test[0]);
  34. print "{$test[0]}\n";
  35. array_shift($test);
  36. $timestamp = call_user_func_array('mktime', $test);
  37. print "ts = ". date("l Y-m-d H:i:s T", $timestamp). "\n";
  38. $strtotime_tstamp = strtotime("first monday", $timestamp);
  39. print "result = ".date("l Y-m-d H:i:s T", $strtotime_tstamp)."\n";
  40. print "wanted = Monday 00:00:00\n\n";
  41. }
  42. ?>
  43. --EXPECTF--
  44. Europe/Andorra
  45. ts = Monday 2037-10-19 17:17:17 CEST
  46. result = Monday 2037-10-26 00:00:00 CET
  47. wanted = Monday 00:00:00
  48. Asia/Dubai
  49. ts = Thursday 1970-01-01 17:17:17 %s
  50. result = Monday 1970-01-05 00:00:00 %s
  51. wanted = Monday 00:00:00
  52. Asia/Kabul
  53. ts = Thursday 1970-01-01 17:17:17 %s
  54. result = Monday 1970-01-05 00:00:00 %s
  55. wanted = Monday 00:00:00
  56. America/Antigua
  57. ts = Thursday 1970-01-01 17:17:17 AST
  58. result = Monday 1970-01-05 00:00:00 AST
  59. wanted = Monday 00:00:00
  60. America/Anguilla
  61. ts = Thursday 1970-01-01 17:17:17 AST
  62. result = Monday 1970-01-05 00:00:00 AST
  63. wanted = Monday 00:00:00
  64. Europe/Tirane
  65. ts = Monday 1983-04-11 17:17:17 CET
  66. result = Monday 1983-04-18 01:00:00 CEST
  67. wanted = Monday 00:00:00
  68. Asia/Yerevan
  69. ts = Monday 2037-10-19 17:17:17 +04
  70. result = Monday 2037-10-26 00:00:00 +04
  71. wanted = Monday 00:00:00
  72. America/Curacao
  73. ts = Thursday 1970-01-01 17:17:17 AST
  74. result = Monday 1970-01-05 00:00:00 AST
  75. wanted = Monday 00:00:00
  76. Africa/Luanda
  77. ts = Thursday 1970-01-01 17:17:17 WAT
  78. result = Monday 1970-01-05 00:00:00 WAT
  79. wanted = Monday 00:00:00
  80. Antarctica/McMurdo
  81. ts = Monday 2037-09-28 17:17:17 NZDT
  82. result = Monday 2037-10-05 00:00:00 NZDT
  83. wanted = Monday 00:00:00
  84. Australia/Adelaide
  85. ts = Friday 1971-01-01 17:17:17 ACST
  86. result = Monday 1971-01-04 00:00:00 ACST
  87. wanted = Monday 00:00:00
  88. Australia/Darwin
  89. ts = Monday 1971-03-29 17:17:17 ACST
  90. result = Monday 1971-04-05 00:00:00 ACST
  91. wanted = Monday 00:00:00
  92. Australia/Perth
  93. ts = Friday 1971-01-01 17:17:17 AWST
  94. result = Monday 1971-01-04 00:00:00 AWST
  95. wanted = Monday 00:00:00
  96. America/Aruba
  97. ts = Monday 1971-03-29 17:17:17 AST
  98. result = Monday 1971-04-05 00:00:00 AST
  99. wanted = Monday 00:00:00
  100. Asia/Baku
  101. ts = Friday 1971-01-01 17:17:17 +04
  102. result = Monday 1971-01-04 00:00:00 +04
  103. wanted = Monday 00:00:00
  104. Europe/Sarajevo
  105. ts = Friday 1971-01-01 17:17:17 CET
  106. result = Monday 1971-01-04 00:00:00 CET
  107. wanted = Monday 00:00:00
  108. America/Barbados
  109. ts = Friday 1971-01-01 17:17:17 AST
  110. result = Monday 1971-01-04 00:00:00 AST
  111. wanted = Monday 00:00:00
  112. Asia/Dacca
  113. ts = Friday 1971-01-01 17:17:17 %s
  114. result = Monday 1971-01-04 00:00:00 %s
  115. wanted = Monday 00:00:00
  116. Europe/Brussels
  117. ts = Friday 1971-01-01 17:17:17 CET
  118. result = Monday 1971-01-04 00:00:00 CET
  119. wanted = Monday 00:00:00
  120. Africa/Ouagadougou
  121. ts = Monday 1971-03-29 17:17:17 GMT
  122. result = Monday 1971-04-05 00:00:00 GMT
  123. wanted = Monday 00:00:00
  124. Europe/Tirane
  125. ts = Monday 1983-04-11 17:17:17 CET
  126. result = Monday 1983-04-18 01:00:00 CEST
  127. wanted = Monday 00:00:00
  128. America/Buenos_Aires
  129. ts = Monday 1974-09-30 17:17:17 %s
  130. result = Monday 1974-10-07 00:00:00 %s
  131. wanted = Monday 00:00:00
  132. America/Rosario
  133. ts = Monday 1974-09-30 17:17:17 %s
  134. result = Monday 1974-10-07 00:00:00 %s
  135. wanted = Monday 00:00:00
  136. Europe/Vienna
  137. ts = Monday 1980-03-31 17:17:17 CET
  138. result = Monday 1980-04-07 00:00:00 CEST
  139. wanted = Monday 00:00:00
  140. Asia/Baku
  141. ts = Monday 1995-12-25 17:17:17 +04
  142. result = Monday 1996-01-01 00:00:00 +04
  143. wanted = Monday 00:00:00