bug54851.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. Bug #54851 (DateTime::createFromFormat() doesn't interpret "D")
  3. --INI--
  4. date.timezone=UTC
  5. --FILE--
  6. <?php
  7. $date = new DateTime("2011-05-17T22:14:12");
  8. $date2 = DateTime::createFromFormat("D H i s", $date->format("D"). ' 0 00 00');
  9. echo $date->format("r"), "\n";
  10. echo $date2->format("r"), "\n";
  11. var_dump($date->format("D") == $date2->format("D"));
  12. // Verify that our implementation works regardless of position
  13. $datePre = DateTime::createFromFormat("!D d M Y", "Fri 17 may 2011");
  14. $datePost = DateTime::createFromFormat("!d M Y D", "17 may 2011 Fri");
  15. echo $datePre->format("r"), "\n";
  16. echo $datePost->format("r"), "\n";
  17. var_dump($datePre->format("Y-m-d") == $datePost->format("Y-m-d"));
  18. // Verify that our implementation is the same as for the constructor and
  19. // strtotime
  20. $date1 = new DateTime("Tuesday");
  21. $date2 = DateTime::createFromFormat("D H i s", "Tuesday 0 00 00");
  22. echo $date1->format('r'), "\n";
  23. echo $date2->format('r'), "\n";
  24. var_dump($date1->format('D') == $date2->format('D'));
  25. // - when the day is not the same as the day on the original date:
  26. $date1 = DateTime::createFromFormat("!D d M Y", "Fri 19 November 2011");
  27. $date2 = new DateTime("Fri 19 November 2011");
  28. echo $date1->format('r'), "\n";
  29. echo $date2->format('r'), "\n";
  30. var_dump($date1->format('Y-m-d') == $date2->format('Y-m-d'));
  31. // - when the day *is* the same as the day on the original date:
  32. $date1 = DateTime::createFromFormat("!D d M Y", "Sat 19 November 2011");
  33. $date2 = new DateTime("Sat 19 November 2011");
  34. echo $date1->format('r'), "\n";
  35. echo $date2->format('r'), "\n";
  36. var_dump($date1->format('Y-m-d') == $date2->format('Y-m-d'));
  37. ?>
  38. --EXPECTF--
  39. Tue, 17 May 2011 22:14:12 +0000
  40. Tue, %d %s %d 00:00:00 +0000
  41. bool(true)
  42. Fri, 20 May 2011 00:00:00 +0000
  43. Fri, 20 May 2011 00:00:00 +0000
  44. bool(true)
  45. Tue, %d %s %d 00:00:00 +0000
  46. Tue, %d %s %d 00:00:00 +0000
  47. bool(true)
  48. Fri, 25 Nov 2011 00:00:00 +0000
  49. Fri, 25 Nov 2011 00:00:00 +0000
  50. bool(true)
  51. Sat, 19 Nov 2011 00:00:00 +0000
  52. Sat, 19 Nov 2011 00:00:00 +0000
  53. bool(true)