1--TEST-- 2datefmt_format_code() 3--EXTENSIONS-- 4intl 5--XFAIL-- 6This test assumes wrong data wrt PDT. It is also too big and needs splitting up. 7--SKIPIF-- 8<?php if (version_compare(INTL_ICU_VERSION, '52.1') < 0) die('skip for ICU >= 52.1'); ?> 9--FILE-- 10<?php 11 12//ini_set("intl.error_level", E_WARNING); 13 14/* 15 * Test for the datefmt_format function 16 */ 17 18 19function ut_main() 20{ 21 $timezone = 'GMT-10:00'; 22 23 $locale_arr = array ( 24 'en_US' 25 ); 26 27 $datetype_arr = array ( 28 IntlDateFormatter::FULL, 29 IntlDateFormatter::LONG, 30 IntlDateFormatter::MEDIUM, 31 IntlDateFormatter::SHORT, 32 IntlDateFormatter::NONE 33 ); 34 35 $res_str = ''; 36 37 38 $time_arr = array ( 39 0, 40 -1200000, 41 1200000, 42 2200000000.0, 43 -2200000000.0, 44 90099999, 45 3600, 46 -3600 47 ); 48 49 $localtime_arr1 = array ( 50 'tm_sec' => 24 , 51 'tm_min' => 3, 52 'tm_hour' => 19, 53 'tm_mday' => 3, 54 'tm_mon' => 3, 55 'tm_year' => 105, 56 ); 57 $localtime_arr2 = array ( 58 'tm_sec' => 21, 59 'tm_min' => 5, 60 'tm_hour' => 7, 61 'tm_mday' => 13, 62 'tm_mon' => 4, 63 'tm_year' => 205, 64 ); 65 $localtime_arr3 = array ( 66 'tm_sec' => 11, 67 'tm_min' => 13, 68 'tm_hour' => 0, 69 'tm_mday' => 17, 70 'tm_mon' => 11, 71 'tm_year' => -5 72 ); 73 74 $localtime_arr = array ( 75 $localtime_arr1, 76 $localtime_arr2, 77 $localtime_arr3 78 ); 79 80 $d1 = new DateTime("2010-01-01 01:02:03", new DateTimeZone("UTC")); 81 $d2 = new DateTime("2000-12-31 03:04:05", new DateTimeZone("UTC")); 82 $d2->setTimezone(new DateTimeZone("PDT")); 83 $dates = array( 84 $d1, 85 $d2, 86 new StdClass(), 87 ); 88 89 //Test format with input as a timestamp : integer 90 foreach( $time_arr as $timestamp_entry){ 91 $res_str .= "\n------------\n"; 92 $res_str .= "\nInput timestamp is : $timestamp_entry"; 93 $res_str .= "\n------------\n"; 94 foreach( $locale_arr as $locale_entry ){ 95 foreach( $datetype_arr as $datetype_entry ) 96 { 97 $res_str .= "\nIntlDateFormatter locale= $locale_entry ,datetype = $datetype_entry ,timetype =$datetype_entry "; 98 $fmt = ut_datefmt_create( $locale_entry , $datetype_entry ,$datetype_entry, $timezone, IntlDateFormatter::GREGORIAN); 99 $formatted = ut_datefmt_format( $fmt , $timestamp_entry); 100 $res_str .= "\nFormatted timestamp is : $formatted"; 101 } 102 } 103 } 104 105 //Test format with input as a localtime :array 106 foreach( $localtime_arr as $localtime_entry){ 107 $res_str .= "\n------------\n"; 108 $res_str .= "\nInput localtime is : "; 109 foreach( $localtime_entry as $key => $value){ 110 $res_str .= "$key : '$value' , "; 111 } 112 113 $res_str .= "\n------------\n"; 114 foreach( $locale_arr as $locale_entry ){ 115 foreach( $datetype_arr as $datetype_entry ) 116 { 117 $res_str .= "\nIntlDateFormatter locale= $locale_entry ,datetype = $datetype_entry ,timetype =$datetype_entry "; 118 $fmt = ut_datefmt_create( $locale_entry , $datetype_entry ,$datetype_entry, $timezone, IntlDateFormatter::GREGORIAN ); 119 $formatted1 = ut_datefmt_format( $fmt , $localtime_entry); 120 if( intl_get_error_code() == U_ZERO_ERROR){ 121 $res_str .= "\nFormatted localtime_array is : $formatted1"; 122 }else{ 123 $res_str .= "\nError while formatting as: '".intl_get_error_message()."'"; 124 } 125 } 126 } 127 } 128 129 foreach($dates as $date_entry) { 130 foreach( $locale_arr as $locale_entry ){ 131 foreach( $datetype_arr as $datetype_entry ) { 132 $res_str .= "\n------------"; 133 $res_str .= "\nDate is: ".var_export($date_entry, true); 134 $res_str .= "\n------------"; 135 136 $fmt = ut_datefmt_create( $locale_entry , $datetype_entry ,$datetype_entry, $timezone, IntlDateFormatter::GREGORIAN ); 137 $formatted1 = ut_datefmt_format( $fmt , $date_entry); 138 if( intl_get_error_code() == U_ZERO_ERROR){ 139 $res_str .= "\nFormatted DateTime is : $formatted1"; 140 }else{ 141 $res_str .= "\nError while formatting as: '".intl_get_error_message()."'"; 142 } 143 } 144 } 145 } 146 147 return $res_str; 148 149} 150 151include_once( 'ut_common.inc' ); 152 153// Run the test 154ut_run(); 155?> 156--EXPECT-- 157------------ 158 159Input timestamp is : 0 160------------ 161 162IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 163Formatted timestamp is : Wednesday, December 31, 1969 at 2:00:00 PM GMT-10:00 164IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 165Formatted timestamp is : December 31, 1969 at 2:00:00 PM GMT-10 166IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 167Formatted timestamp is : Dec 31, 1969, 2:00:00 PM 168IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 169Formatted timestamp is : 12/31/69, 2:00 PM 170IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 171Formatted timestamp is : 19691231 02:00 PM 172------------ 173 174Input timestamp is : -1200000 175------------ 176 177IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 178Formatted timestamp is : Wednesday, December 17, 1969 at 4:40:00 PM GMT-10:00 179IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 180Formatted timestamp is : December 17, 1969 at 4:40:00 PM GMT-10 181IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 182Formatted timestamp is : Dec 17, 1969, 4:40:00 PM 183IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 184Formatted timestamp is : 12/17/69, 4:40 PM 185IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 186Formatted timestamp is : 19691217 04:40 PM 187------------ 188 189Input timestamp is : 1200000 190------------ 191 192IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 193Formatted timestamp is : Wednesday, January 14, 1970 at 11:20:00 AM GMT-10:00 194IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 195Formatted timestamp is : January 14, 1970 at 11:20:00 AM GMT-10 196IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 197Formatted timestamp is : Jan 14, 1970, 11:20:00 AM 198IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 199Formatted timestamp is : 1/14/70, 11:20 AM 200IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 201Formatted timestamp is : 19700114 11:20 AM 202------------ 203 204Input timestamp is : 2200000000 205------------ 206 207IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 208Formatted timestamp is : Sunday, September 18, 2039 at 1:06:40 PM GMT-10:00 209IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 210Formatted timestamp is : September 18, 2039 at 1:06:40 PM GMT-10 211IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 212Formatted timestamp is : Sep 18, 2039, 1:06:40 PM 213IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 214Formatted timestamp is : 9/18/39, 1:06 PM 215IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 216Formatted timestamp is : 20390918 01:06 PM 217------------ 218 219Input timestamp is : -2200000000 220------------ 221 222IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 223Formatted timestamp is : Saturday, April 14, 1900 at 2:53:20 PM GMT-10:00 224IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 225Formatted timestamp is : April 14, 1900 at 2:53:20 PM GMT-10 226IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 227Formatted timestamp is : Apr 14, 1900, 2:53:20 PM 228IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 229Formatted timestamp is : 4/14/00, 2:53 PM 230IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 231Formatted timestamp is : 19000414 02:53 PM 232------------ 233 234Input timestamp is : 90099999 235------------ 236 237IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 238Formatted timestamp is : Wednesday, November 8, 1972 at 9:46:39 AM GMT-10:00 239IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 240Formatted timestamp is : November 8, 1972 at 9:46:39 AM GMT-10 241IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 242Formatted timestamp is : Nov 8, 1972, 9:46:39 AM 243IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 244Formatted timestamp is : 11/8/72, 9:46 AM 245IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 246Formatted timestamp is : 19721108 09:46 AM 247------------ 248 249Input timestamp is : 3600 250------------ 251 252IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 253Formatted timestamp is : Wednesday, December 31, 1969 at 3:00:00 PM GMT-10:00 254IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 255Formatted timestamp is : December 31, 1969 at 3:00:00 PM GMT-10 256IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 257Formatted timestamp is : Dec 31, 1969, 3:00:00 PM 258IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 259Formatted timestamp is : 12/31/69, 3:00 PM 260IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 261Formatted timestamp is : 19691231 03:00 PM 262------------ 263 264Input timestamp is : -3600 265------------ 266 267IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 268Formatted timestamp is : Wednesday, December 31, 1969 at 1:00:00 PM GMT-10:00 269IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 270Formatted timestamp is : December 31, 1969 at 1:00:00 PM GMT-10 271IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 272Formatted timestamp is : Dec 31, 1969, 1:00:00 PM 273IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 274Formatted timestamp is : 12/31/69, 1:00 PM 275IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 276Formatted timestamp is : 19691231 01:00 PM 277------------ 278 279Input localtime is : tm_sec : '24' , tm_min : '3' , tm_hour : '19' , tm_mday : '3' , tm_mon : '3' , tm_year : '105' , 280------------ 281 282IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 283Formatted localtime_array is : Sunday, April 3, 2005 at 7:03:24 PM GMT-10:00 284IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 285Formatted localtime_array is : April 3, 2005 at 7:03:24 PM GMT-10 286IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 287Formatted localtime_array is : Apr 3, 2005, 7:03:24 PM 288IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 289Formatted localtime_array is : 4/3/05, 7:03 PM 290IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 291Formatted localtime_array is : 20050403 07:03 PM 292------------ 293 294Input localtime is : tm_sec : '21' , tm_min : '5' , tm_hour : '7' , tm_mday : '13' , tm_mon : '4' , tm_year : '205' , 295------------ 296 297IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 298Formatted localtime_array is : Wednesday, May 13, 2105 at 7:05:21 AM GMT-10:00 299IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 300Formatted localtime_array is : May 13, 2105 at 7:05:21 AM GMT-10 301IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 302Formatted localtime_array is : May 13, 2105, 7:05:21 AM 303IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 304Formatted localtime_array is : 5/13/05, 7:05 AM 305IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 306Formatted localtime_array is : 21050513 07:05 AM 307------------ 308 309Input localtime is : tm_sec : '11' , tm_min : '13' , tm_hour : '0' , tm_mday : '17' , tm_mon : '11' , tm_year : '-5' , 310------------ 311 312IntlDateFormatter locale= en_US ,datetype = 0 ,timetype =0 313Formatted localtime_array is : Tuesday, December 17, 1895 at 12:13:11 AM GMT-10:00 314IntlDateFormatter locale= en_US ,datetype = 1 ,timetype =1 315Formatted localtime_array is : December 17, 1895 at 12:13:11 AM GMT-10 316IntlDateFormatter locale= en_US ,datetype = 2 ,timetype =2 317Formatted localtime_array is : Dec 17, 1895, 12:13:11 AM 318IntlDateFormatter locale= en_US ,datetype = 3 ,timetype =3 319Formatted localtime_array is : 12/17/95, 12:13 AM 320IntlDateFormatter locale= en_US ,datetype = -1 ,timetype =-1 321Formatted localtime_array is : 18951217 12:13 AM 322------------ 323Date is: \DateTime::__set_state(array( 324 'date' => '2010-01-01 01:02:03.000000', 325 'timezone_type' => 3, 326 'timezone' => 'UTC', 327)) 328------------ 329Formatted DateTime is : Thursday, December 31, 2009 at 3:02:03 PM GMT-10:00 330------------ 331Date is: \DateTime::__set_state(array( 332 'date' => '2010-01-01 01:02:03.000000', 333 'timezone_type' => 3, 334 'timezone' => 'UTC', 335)) 336------------ 337Formatted DateTime is : December 31, 2009 at 3:02:03 PM GMT-10 338------------ 339Date is: \DateTime::__set_state(array( 340 'date' => '2010-01-01 01:02:03.000000', 341 'timezone_type' => 3, 342 'timezone' => 'UTC', 343)) 344------------ 345Formatted DateTime is : Dec 31, 2009, 3:02:03 PM 346------------ 347Date is: \DateTime::__set_state(array( 348 'date' => '2010-01-01 01:02:03.000000', 349 'timezone_type' => 3, 350 'timezone' => 'UTC', 351)) 352------------ 353Formatted DateTime is : 12/31/09, 3:02 PM 354------------ 355Date is: \DateTime::__set_state(array( 356 'date' => '2010-01-01 01:02:03.000000', 357 'timezone_type' => 3, 358 'timezone' => 'UTC', 359)) 360------------ 361Formatted DateTime is : 20091231 03:02 PM 362------------ 363Date is: \DateTime::__set_state(array( 364 'date' => '2000-12-30 19:04:05.000000', 365 'timezone_type' => 2, 366 'timezone' => 'PDT', 367)) 368------------ 369Formatted DateTime is : Saturday, December 30, 2000 at 5:04:05 PM GMT-10:00 370------------ 371Date is: \DateTime::__set_state(array( 372 'date' => '2000-12-30 19:04:05.000000', 373 'timezone_type' => 2, 374 'timezone' => 'PDT', 375)) 376------------ 377Formatted DateTime is : December 30, 2000 at 5:04:05 PM GMT-10 378------------ 379Date is: \DateTime::__set_state(array( 380 'date' => '2000-12-30 19:04:05.000000', 381 'timezone_type' => 2, 382 'timezone' => 'PDT', 383)) 384------------ 385Formatted DateTime is : Dec 30, 2000, 5:04:05 PM 386------------ 387Date is: \DateTime::__set_state(array( 388 'date' => '2000-12-30 19:04:05.000000', 389 'timezone_type' => 2, 390 'timezone' => 'PDT', 391)) 392------------ 393Formatted DateTime is : 12/30/00, 5:04 PM 394------------ 395Date is: \DateTime::__set_state(array( 396 'date' => '2000-12-30 19:04:05.000000', 397 'timezone_type' => 2, 398 'timezone' => 'PDT', 399)) 400------------ 401Formatted DateTime is : 20001230 05:04 PM 402------------ 403Date is: (object) array( 404) 405------------ 406Error while formatting as: 'datefmt_format: invalid object type for date/time (only IntlCalendar and DateTimeInterface permitted): U_ILLEGAL_ARGUMENT_ERROR' 407------------ 408Date is: (object) array( 409) 410------------ 411Error while formatting as: 'datefmt_format: invalid object type for date/time (only IntlCalendar and DateTimeInterface permitted): U_ILLEGAL_ARGUMENT_ERROR' 412------------ 413Date is: (object) array( 414) 415------------ 416Error while formatting as: 'datefmt_format: invalid object type for date/time (only IntlCalendar and DateTimeInterface permitted): U_ILLEGAL_ARGUMENT_ERROR' 417------------ 418Date is: (object) array( 419) 420------------ 421Error while formatting as: 'datefmt_format: invalid object type for date/time (only IntlCalendar and DateTimeInterface permitted): U_ILLEGAL_ARGUMENT_ERROR' 422------------ 423Date is: (object) array( 424) 425------------ 426Error while formatting as: 'datefmt_format: invalid object type for date/time (only IntlCalendar and DateTimeInterface permitted): U_ILLEGAL_ARGUMENT_ERROR' 427