dateformat_parse.phpt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. --TEST--
  2. datefmt_parse_code() icu <= 4.2
  3. --SKIPIF--
  4. <?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
  5. <?php if(version_compare(INTL_ICU_VERSION, '4.3', '<') != 1) print 'skip'; ?>
  6. --INI--
  7. date.timezone="America/Los_Angeles"
  8. --FILE--
  9. <?php
  10. /*
  11. * Test for the datefmt_parse function
  12. */
  13. putenv('TZ=America/Los_Angeles');
  14. function ut_main()
  15. {
  16. $locale_arr = array (
  17. 'en_US_CA'
  18. );
  19. $datetype_arr = array (
  20. IntlDateFormatter::FULL,
  21. IntlDateFormatter::LONG,
  22. IntlDateFormatter::MEDIUM,
  23. IntlDateFormatter::SHORT,
  24. IntlDateFormatter::NONE
  25. );
  26. $res_str = '';
  27. $text_arr = array (
  28. // Full parsing
  29. array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
  30. array("Wednesday, December 17, 1969 6:40:00 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
  31. array("Thursday, December 18, 1969 8:49:59 PM PST", IntlDateFormatter::FULL, IntlDateFormatter::FULL),
  32. array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::FULL),
  33. array("12/18/69 8:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::SHORT),
  34. array("19691218 08:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::SHORT),
  35. // Partial parsing
  36. array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::NONE),
  37. array("Sunday, September 18, 2039 4:06:40 PM PT", IntlDateFormatter::FULL, IntlDateFormatter::SHORT),
  38. array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::NONE),
  39. array("December 18, 1969 8:49:59 AM PST", IntlDateFormatter::LONG, IntlDateFormatter::SHORT),
  40. array("12/18/69 8:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::LONG),
  41. array("19691218 08:49 AM", IntlDateFormatter::SHORT, IntlDateFormatter::LONG),
  42. );
  43. foreach( $text_arr as $text_entry){
  44. $fmt = ut_datefmt_create( 'en_US_CA', $text_entry[1], $text_entry[2]);
  45. $parse_pos = 0;
  46. $parsed = ut_datefmt_parse( $fmt , $text_entry[0] , $parse_pos );
  47. $res_str .= "\nInput text : {$text_entry[0]} ; DF = {$text_entry[1]}; TF = {$text_entry[2]}";
  48. if( intl_get_error_code() != U_ZERO_ERROR) {
  49. $res_str .= "\nError : ".intl_get_error_message();
  50. }
  51. $res_str .= "\nParsed: $parsed; parse_pos : $parse_pos\n";
  52. }
  53. return $res_str;
  54. }
  55. include_once( 'ut_common.inc' );
  56. // Run the test
  57. ut_run();
  58. ?>
  59. --EXPECT--
  60. Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = 0
  61. Parsed: 2200000000; parse_pos : 40
  62. Input text : Wednesday, December 17, 1969 6:40:00 PM PT ; DF = 0; TF = 0
  63. Parsed: -1200000; parse_pos : 42
  64. Input text : Thursday, December 18, 1969 8:49:59 PM PST ; DF = 0; TF = 0
  65. Parsed: -1105801; parse_pos : 42
  66. Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = 0
  67. Parsed: -1149001; parse_pos : 32
  68. Input text : 12/18/69 8:49 AM ; DF = 3; TF = 3
  69. Parsed: -1149060; parse_pos : 16
  70. Input text : 19691218 08:49 AM ; DF = 3; TF = 3
  71. Error : Date parsing failed: U_PARSE_ERROR
  72. Parsed: ; parse_pos : 8
  73. Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = -1
  74. Parsed: 2199942000; parse_pos : 26
  75. Input text : Sunday, September 18, 2039 4:06:40 PM PT ; DF = 0; TF = 3
  76. Error : Date parsing failed: U_PARSE_ERROR
  77. Parsed: ; parse_pos : 31
  78. Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = -1
  79. Parsed: -1180800; parse_pos : 17
  80. Input text : December 18, 1969 8:49:59 AM PST ; DF = 1; TF = 3
  81. Error : Date parsing failed: U_PARSE_ERROR
  82. Parsed: ; parse_pos : 22
  83. Input text : 12/18/69 8:49 AM ; DF = 3; TF = 1
  84. Error : Date parsing failed: U_PARSE_ERROR
  85. Parsed: ; parse_pos : 13
  86. Input text : 19691218 08:49 AM ; DF = 3; TF = 1
  87. Error : Date parsing failed: U_PARSE_ERROR
  88. Parsed: ; parse_pos : 8