Fatal error: Uncaught Error: Found unconstructed IntlDateFormatter in /mnt/web008/c0/70/5508370/htdocs/pju24/class/Jspit/Dt.php:648 Stack trace: #0 /mnt/web008/c0/70/5508370/htdocs/pju24/class/Jspit/Dt.php(648): datefmt_format() #1 /mnt/web008/c0/70/5508370/htdocs/pju24/check/phpcheck.jspit.dt.php(551): Jspit\Dt->formatL() #2 {main} thrown in /mnt/web008/c0/70/5508370/htdocs/pju24/class/Jspit/Dt.php on line 648 Test incomplete: Fatal Error
Test phpcheck.jspit.dt.php phpcheck.jspit.dt.php Total: 94 Tests, 0 Errors, ↻all
PHPCheck V1.66, OS: Linux, Machine: el9_7.x86_64, PHP-Version: 8.2.31 (64 Bit), Time: 84.632 ms (AVG: 0.900 ms), Memory: 4.0M (512M)
CommentLineCodeResultTest
check class version 32 $info $t->getClassVersion(Dt::class);
$t->check($info, !empty($info) AND $info >= 2.2); 
[0.091 ms]
'2.3'
Ok
get hash of file 36 $result hash_file('crc32',$classFile);
$t->checkNotEqual($result,false); 
[0.520 ms]
'6a425a09'
Ok
get numbers of lines 40 $result $t->getNumberOfLines($classFile);
$t->checkNotEqual($result,false); 
[0.249 ms]
2701
Ok
Check if extension IntlDateFormatter exists 44 $msg extension_loaded("Intl"
  ? 
'ok' 
  
'missing Intl extension'
;
$t->checkEqual($msg,'ok'); 
[0.003 ms]
'ok'
Ok
set default Timezone and Language 51 Dt::default_timezone_set('Europe/Berlin');
$result Dt::setDefaultLanguage('en');
$t->checkEqual($result,true); 
[0.007 ms]
true
Ok
get default Language 56 $result =Dt::getDefaultLanguage();
$t->checkEqual($result,'en'); 
[0.001 ms]
'en'
Ok
Create current Time (Now) 61 $dt Dt::create('now');
$ok $dt->format('Y-m-d H:i:s') == date_create('now')->format('Y-m-d H:i:s');
$t->check($dt$ok); 
[0.155 ms]
\Jspit\Dt::__set_state(array( 'errorInfo' => '', 'lastMatchRegEx' => false, 'dat ..
Ok
cast dt object to string 66 $dt Dt::create('now');
$result = (string)$dt;
$t->checkEqual($result$dt->format(Dt::TO_STRING_FORMAT)); 
[0.016 ms]
'2026-06-03 21:25:16'
Ok
Create this Date 00:00 (Today) 71 $dt Dt::create('Today');
$t->check($dt$dt == date_create('Today')); 
[0.015 ms]
\Jspit\Dt::__set_state(array( 'errorInfo' => '', 'lastMatchRegEx' => false, 'dat ..
Ok
Create a fix Date dd.mm.yyyy HH:ii 75 $date Dt::create('6.11.1875 04:09');
$t->checkEqual((string)$date'1875-11-06 04:09:00'); 
[0.016 ms]
'1875-11-06 04:09:00'
Ok
Create a fix Date dd.mm.yy 79 // German language required for this
Dt::setDefaultLanguage('de');
$date Dt::create('5.6.15');
$t->checkEqual((string)$date'2015-06-05 00:00:00'); 
[0.489 ms]
'2015-06-05 00:00:00'
Ok
Create a fix Date dd.mm. 85 $date Dt::create('5.6.');
$t->checkEqual((string)$datedate('Y').'-06-05 00:00:00'); 
[0.042 ms]
'2026-06-05 00:00:00'
Ok
Create a fix Date dd.mm.yy HH:ii 89 $date Dt::create('3.4.81 6:9');
$t->checkEqual((string)$date'1981-04-03 06:09:00'); 
[0.032 ms]
'1981-04-03 06:09:00'
Ok
Create a Date with Microseconds 93 $date Dt::create('1981-04-03 06:09:25.160000');
$t->checkEqual($date->toStringWithMicro(), '1981-04-03 06:09:25.160000'); 
[0.044 ms]
'1981-04-03 06:09:25.160000'
Ok
create Date B.C.(before christ) 97 $date Dt::create('-400-05-06');
$t->checkEqual((string)$date'-0400-05-06 00:00:00'); 
[0.033 ms]
'-0400-05-06 00:00:00'
Ok
create Date B.C.(before christ) 101 $date Dt::create('-0036/05/06');
$t->checkEqual((string)$date'-0036-05-06 00:00:00'); 
[0.028 ms]
'-0036-05-06 00:00:00'
Ok
Create a fix Date with english month 105 $date Dt::create('March 4, 2016');
$t->checkEqual((string)$date'2016-03-04 00:00:00'); 
[0.032 ms]
'2016-03-04 00:00:00'
Ok
Create a fix Date with german month 109 $date Dt::create('4.März 2016');
$t->checkEqual((string)$date'2016-03-04 00:00:00'); 
[0.258 ms]
'2016-03-04 00:00:00'
Ok
Create Date from year and Week-Number 113 Dt::setDefaultLanguage('en');
$date Dt::create('2015W50');
$t->checkEqual((string)$date'2015-12-07 00:00:00'); 
[0.017 ms]
'2015-12-07 00:00:00'
Ok
Create a Date easter monday 2016 from chain of strings 118 $date Dt::create('2016-1-1|{{easter}}|+1 Day');
$t->checkEqual((string)$date'2016-03-28 00:00:00'); 
[0.237 ms]
'2016-03-28 00:00:00'
Ok
Date easter monday 2016 from chain with alternative spelling 122 $date Dt::create('2016-1-1 and {{easter}} and +1 Day');
$t->checkEqual((string)$date'2016-03-28 00:00:00'); 
[0.066 ms]
'2016-03-28 00:00:00'
Ok
Create Date from DateTime-Object 126 $tz = new DateTimeZone("UTC");
$dateTime date_create('2000-01-02 08:00'$tz);
$date Dt::create($dateTime);
$expect Dt::create('2000-01-02 08:00:00',$tz);
$t->checkEqual(json_encode($date), json_encode($expect)); 
[0.025 ms]
'{"date":"2000-01-02 08:00:00.000000","timezone_type":3,"timezone":"UTC"}'
Ok
Create Date with new Timezone from DateTime-Object 133 $tz = new DateTimeZone("UTC");
$dateTime date_create('2000-01-02 08:00'$tz);
$date Dt::create($dateTime"Europe/Berlin");
$expect Dt::create('2000-01-02 09:00:00',"Europe/Berlin");
$t->checkEqual(json_encode($date), json_encode($expect)); 
[0.018 ms]
'{"date":"2000-01-02 09:00:00.000000","timezone_type":3,"timezone":"Europe\\/Ber ..
Ok
Create Date Timezone UTC 140 $date Dt::create('1.1.2014 00:00','UTC');
$t->checkEqual($date->formatL('Y-m-d H:i O'), '2014-01-01 00:00 +0000'); 
[0.038 ms]
'2014-01-01 00:00 +0000'
Ok
Create Date Timezone New York 144 $date Dt::create('1.1.2014 00:00','America/New_York');
$t->checkEqual($date->formatL('Y-m-d H:i O'), '2014-01-01 00:00 -0500'); 
[0.020 ms]
'2014-01-01 00:00 -0500'
Ok
create from Format Y-m-dTH:i:s.uZ 148 $date Dt::create('2020-02-06T17:26:38.27774Z');
$t->checkEqual($date->format('Y-m-d H:i:s.u e'), '2020-02-06 17:26:38.277740 Z'); 
[0.031 ms]
'2020-02-06 17:26:38.277740 Z'
Ok
create from influxdb time format 152 $date Dt::create('2020-02-06T17:26:38.277740846Z');
$t->checkEqual($date->format('Y-m-d H:i:s.u e'), '2020-02-06 17:26:38.277741 Z'); 
[0.036 ms]
'2020-02-06 17:26:38.277741 Z'
Ok
Create Date from Integer-Timestamp 156 $timeStamp strtotime('2015-12-24');
$date Dt::create($timeStamp);
$t->checkEqual((string)$date'2015-12-24 00:00:00'); 
[0.019 ms]
'2015-12-24 00:00:00'
Ok
Create Date from Float-Timestamp 161 $floatTimeStamp strtotime('2015-12-25') + 2.5;
$date Dt::create($floatTimeStamp);
$expected '2015-12-25 00:00:02.500000';
$t->checkEqual($date->formatL('Y-m-d H:i:s.u'), $expected); 
[0.013 ms]
'2015-12-25 00:00:02.500000'
Ok
Create Date from a big Float Timestamp with Milliseconds 167 $date Dt::create(35570432325.25);
$expected '3097-03-07 20:38:45.250000';
$t->checkEqual($date->formatL('Y-m-d H:i:s.u'), $expected); 
[0.010 ms]
'3097-03-07 20:38:45.250000'
Ok
Create Date from Millisecond Timestamp 172 $milliseconds '1601735792198';
$date Dt::create($milliseconds/1000);
$expected "2020-10-03T16:36:32.198000+02:00";
$t->checkEqual($date->formatL('Y-m-d\TH:i:s.uP'), $expected); 
[0.010 ms]
'2020-10-03T16:36:32.198000+02:00'
Ok
Create Date from a big negative Float Timestamp 178 $date Dt::create(-63292409608.0);
$t->checkEqual((string)$date,'-0036-05-06 00:00:00'); 
[0.008 ms]
'-0036-05-06 00:00:00'
Ok
Create Date from a big negative Float Timestamp with @ 182 $date Dt::create('@-2636450170.75','UTC');
$t->checkEqual($date->toStringWithMicro(),"1886-06-15 12:43:49.250000"); 
[0.010 ms]
'1886-06-15 12:43:49.250000'
Ok
Create Date from a Javascript Milliseconds Timestamp 186 $timeStamp 1393161787500;
$date Dt::create($timeStamp/1000);
$t->checkEqual($date->toStringWithMicro(),"2014-02-23 14:23:07.500000"); 
[0.007 ms]
'2014-02-23 14:23:07.500000'
Ok
Create Date from a big negativ Float Timestamp 191 $date Dt::create(-22144579200.,'UTC');
$t->checkEqual((string)$date'1268-04-07 00:00:00'); 
[0.007 ms]
'1268-04-07 00:00:00'
Ok
Create from int arguments yaer, month.. 195 $dt Dt::create(2019,5,1,12,23,45,12345);
$t->checkEqual($dt->toStringWithMicro(),"2019-05-01 12:23:45.012345"); 
[0.018 ms]
'2019-05-01 12:23:45.012345'
Ok
Create from arguments yaer=null, month, day + hour 199 $dt Dt::create(null,12,24,18);  //24.12 18:00 this year
$t->checkEqual($dt->format('Y-m-d H:i:s'),date("Y")."-12-24 18:00:00"); 
[0.013 ms]
'2026-12-24 18:00:00'
Ok
Create today at 18:30 203 $dt Dt::create(null,null,null,18,30);
$expected Dt::create('today 18:30');  //better readable
$t->check((string)$dt$dt == $expected); 
[0.016 ms]
'2026-06-03 18:30:00'
Ok
Create from int arguments yaer, month, day, timezone 208 $dt Dt::create(2019,5,1,"Europe/Moscow");
$t->checkEqual($dt->format('Y-m-d H:i:s e'),"2019-05-01 00:00:00 Europe/Moscow"); 
[0.017 ms]
'2019-05-01 00:00:00 Europe/Moscow'
Ok
Create from int arguments H:i curr.Time + timezone UTC 212 $dt Dt::create(2019,5,1,null,null,"UTC");
$t->checkEqual($dt->format('H:i'),gmdate('H:i')); 
[0.010 ms]
'19:25'
Ok
Create from int arguments with negative year 216 $dt Dt::create(-432,5,1,"UTC");
$t->checkEqual($dt->format('Y-m-d e'),'-0432-05-01 UTC'); 
[0.011 ms]
'-0432-05-01 UTC'
Ok
Create Now with Wildcards 221 $date Dt::create("{{Y-m-d}}");
$t->checkEqual((string)$datedate("Y-m-d H:i:s")); 
[0.051 ms]
'2026-06-03 21:25:16'
Ok
Create Today with Wildcards 225 $date Dt::create("{{Y-m-d}} 00:00");
$t->checkEqual((string)$date, (string)Dt::create("Today")); 
[0.045 ms]
'2026-06-03 00:00:00'
Ok
Create easter date this year 229 $date Dt::create("{{easter}}");
$expected Dt::create("Today")->setEasterDate();
$t->checkEqual((string)$date, (string)$expected); 
[0.049 ms]
'2026-04-05 00:00:00'
Ok
last Monday of October this year with Wildcard 234 $date Dt::create("last Monday of October {{year}}");
$expected Dt::create("last Monday of October this year");
$t->checkEqual((string)$date, (string)$expected); 
[0.057 ms]
'2026-10-26 00:00:00'
Ok
Basis of Daynumber of 2017-08-01 (date("z") 239 $date Dt::create("2017-08-17 00:00|-{{z}} Days");
$expected Dt::create("2017-01-01 00:00");
$t->checkEqual((string)$date, (string)$expected); 
[0.048 ms]
'2017-01-01 00:00:00'
Ok
if 2018-07-29 is Sunday (yes), take the next Monday 244 $date Dt::create("2018-07-29|{{?D=Sun}}next Monday");
$t->checkEqual((string)$date"2018-07-30 00:00:00"); 
[0.045 ms]
'2018-07-30 00:00:00'
Ok
if 2018-07-28 is Sunday (no), take the next Monday 248 $date Dt::create("2018-07-28|{{?D=Sun}}next Monday");
$t->checkEqual((string)$date"2018-07-28 00:00:00"); 
[0.052 ms]
'2018-07-28 00:00:00'
Ok
2 Month after 2017-06-15 13:30, Day 5 of this Month, same Time 252 $date Dt::create("2017-06-15 13:30|+2 month|{{Y}}-{{m}}-05");
$t->checkEqual((string)$date"2017-08-05 13:30:00"); 
[0.047 ms]
'2017-08-05 13:30:00'
Ok
crate dt with language en 256 Dt::setDefaultLanguage('en');
$dt Dt::create('2017-03-03T09:06:41.187');
$t->checkEqual($dt->toStringWithMicro(), "2017-03-03 09:06:41.187000"); 
[0.009 ms]
'2017-03-03 09:06:41.187000'
Ok
Date with relative Format 261 $dt Dt::create('first Sunday of Jun 2018 23:16:15.4');
$t->checkEqual((string)$dt"2018-06-03 23:16:15"); 
[0.011 ms]
'2018-06-03 23:16:15'
Ok
Date with relative Format language de 265 Dt::setDefaultLanguage('de');
$dt Dt::create('first Sunday of Jun 2018 23:16:15.4');
$t->checkEqual((string)$dt"2018-06-03 23:16:15"); 
[0.036 ms]
'2018-06-03 23:16:15'
Ok
Date with pm time 270 $dt Dt::create('Nov 7 2008 1:45 pm');
$t->checkEqual((string)$dt"2008-11-07 13:45:00"); 
[0.035 ms]
'2008-11-07 13:45:00'
Ok
crate dt from format 276 $input     "Apr 19 '15 at 13:56";
$format "M j 'y ?? H:i";
$dt Dt::createDtFromFormat($format$input);
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"2015-04-19 13:56:00"); 
[0.041 ms]
'2015-04-19 13:56:00'
Ok
crate dt from format 283 $input "2020-01-07T11:55:34:438 GMT+0600";
$format 'Y-m-d\Th:i:s:u \G\M\TO';
$dt Dt::createDtFromFormat($format$input);
$result $dt $dt->format($format) : $dt;
$t->checkEqual($result"2020-01-07T11:55:34:438000 GMT+0600"); 
[0.034 ms]
'2020-01-07T11:55:34:438000 GMT+0600'
Ok
create from day of year starting with 1 and year (DOY) 290 $input "76 2021";
$dt Dt::createDtFromFormat("!z Y",$input)->modify("-1 Day");
$t->checkEqual((string)$dt"2021-03-17 00:00:00"); 
[0.020 ms]
'2021-03-17 00:00:00'
Ok
crate dt from format with array of formats 295 $input '7/1/2018';
$formats = ['!Y/m/d','!m/d/Y'];
$dt Dt::createDtFromFormat($formats,$input);
$t->checkEqual((string)$dt"2018-07-01 00:00:00"); 
[0.016 ms]
'2018-07-01 00:00:00'
Ok
crate dt from format strict mode 301 Dt::setStrictModeCreate(true);
$input "13 2017";  //13 is a invalid month
$dt Dt::createDtFromFormat("!n Y"$input);
$t->checkEqual($dtfalse); 
[0.009 ms]
false
Ok
crate dt from format non strict mode 307 Dt::setStrictModeCreate(false); //default false
$input "13 2017";
$dt Dt::createDtFromFormat("!n Y"$input);
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"2018-01-01 00:00:00"); 
[0.014 ms]
'2018-01-01 00:00:00'
Ok
crate dt from format with french Month 314 $input "7 Août 2020";
Dt::setDefaultLanguage('fr');
$dt Dt::createDtFromFormat("!d M Y"$input);
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"2020-08-07 00:00:00"); 
[1.914 ms]
'2020-08-07 00:00:00'
Ok
Create from the Japanese 321 //UTF-8 multibyte characters need * instead of ?
$input ='2008年11月13日';
$dt Dt::createDtFromFormat('!Y*m*d*',$input);
$t->checkEqual((string)$dt"2008-11-13 00:00:00"); 
[0.016 ms]
'2008-11-13 00:00:00'
Ok
createFromIntlFormat 332 $input "21 Août 2020";
//http://userguide.icu-project.org/formatparse/datetime
$dt Dt::createFromIntlFormat('d MMMM yyyy',$input,'Europe/Paris','fr'); 
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"2020-08-21 00:00:00"); 
[1.220 ms]
'2020-08-21 00:00:00'
Ok
createFromIntlFormat th@calendar=buddhist 339 $input "17 มกราคม 2507";  //January 17, 1964
$dt Dt::createFromIntlFormat('d MMMM yyyy',$input,"Asia/Bangkok",'th@calendar=buddhist'); 
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"1964-01-17 00:00:00"); 
[0.580 ms]
'1964-01-17 00:00:00'
Ok
createFromIntlFormat ja_JP@calendar=japanese 345 $input "平成30年8月1日";  //1 August 2018
$dt Dt::createFromIntlFormat('LONG+NONE',$input,"Asia/Tokyo",'ja_JP@calendar=japanese'); 
$result $dt ? (string)$dt $dt;
$t->checkEqual($result"2018-08-01 00:00:00"); 
[68.8 ms]
'2018-08-01 00:00:00'
Ok
timeStampFromIntlFormat 351 $input "8 Août 20";  //2020-08-08
$ts Dt::timeStampFromIntlFormat('d MMMM yy',$input,'Europe/Paris','fr');
$expected date_create('2020-08-08',new DateTimeZone('Europe/Paris'))
  ->
getTimeStamp();
$t->checkEqual($ts$expected); 
[0.140 ms]
1596837600
Ok
crate from Julian Date Number 360 $date Dt::createFromJD(2458294.65168,"UTC");
$t->checkEqual((string)$date"2018-06-25 03:38:25"); 
[0.073 ms]
'2018-06-25 03:38:25'
Ok
crate from Julian Date Number (int) 364 $jdNumber 2345678;
$date Dt::createFromJD($jdNumber,"UTC");
$arr cal_from_jd($jdNumber,CAL_GREGORIAN);
$t->check($date->format('Y-m-d'), $arr['date'] === $date->format('n/j/Y')); 
[0.030 ms]
'1710-02-23'
Ok
crate from Microsoft Excel Timestamp (days since Dec 31 1899) 370 $date Dt::createFromMsTimestamp(43317.54,"UTC");
$t->checkEqual((string)$date"2018-08-05 12:57:36"); 
[0.013 ms]
'2018-08-05 12:57:36'
Ok
crate from Microsoft Excel Timestamp with Milliseconds 374 $date Dt::createFromMsTimestamp(5273.57305851856,"UTC");
$expected "1914-06-08 13:45:12.256000";
$t->checkEqual($date->toStringWithMicro(), $expected); 
[0.018 ms]
'1914-06-08 13:45:12.256000'
Ok
crate from Microsoft Excel string timestamp with comma 379 //$strNumber = cell('10.09.2022') + cell('10:12:13,250') 
$strNumber '44814,4251533565';
$date Dt::createFromMsTimestamp($strNumber,"UTC");
$expected "2022-09-10 10:12:13.250000";
$t->checkEqual($date->toStringWithMicro(), $expected); 
[0.011 ms]
'2022-09-10 10:12:13.250000'
Ok
createFromSystemTime 387 //create a LabVIEW Timestamp from base 1 Jan 1904 with resulution 1ms
$testDate "2006-12-13 09:45:55";
$basisDate "1904-1-1";
$resolution 0.001//1ms
$timeStamp = -Dt::create($testDate,'UTC')->diffTotal($basisDate,"Seconds")/$resolution;
//createFromSystemTime
$date Dt::createFromSystemTime($timeStamp,$basisDate,$resolution,"UTC");
$t->checkEqual((string)$date$testDate); 
[0.094 ms]
'2006-12-13 09:45:55'
Ok
create dt from a LDAP Timestamp 397 $timeStamp 130981536000000000;
$date Dt::createFromSystemTime($timeStamp,'1601-1-1',1.E-7,"UTC");
$expected "2016-01-25 00:00:00";
$t->checkEqual((string)$date$expected); 
[0.016 ms]
'2016-01-25 00:00:00'
Ok
create dt from a LDAP Timestamp with Microseconds 403 $timeStamp ="132497313049180481";
$date Dt::createFromSystemTime($timeStamp,'1601-1-1',1.E-7,"UTC");
$expected Dt::create('2020-11-13 08:55:04.9180481','UTC');
$ok abs($date->diffTotal($expected,'Sec')) < 0.00001;  //tolerance 10 µs
$t->check($date->toStringWithMicro(), $ok); 
[0.067 ms]
'2020-11-13 08:55:04.918046'
Ok
create dt from Mac Timestamp: seconds since Jan 1 1904 410 $timeStamp 3662360215;
$date Dt::createFromSystemTime($timeStamp,'Jan 1 1904',1.0,"UTC");
$expected "2020-01-20 10:16:55";
$t->checkEqual((string)$date$expected); 
[0.025 ms]
'2020-01-20 10:16:55'
Ok
create dt from Microsoft Timestamp: days since Dec 31 1899 416 $timeStamp 43850.428414352;
$date Dt::createFromSystemTime($timeStamp,'Dec 30 1899','1 Day',"UTC");
$expected "2020-01-20 10:16:55";
$t->checkEqual((string)$date$expected); 
[0.179 ms]
'2020-01-20 10:16:55'
Ok
create dt from Epoche Day: days since 1970-01-01 422 $epocheDay 18740.25;
$date Dt::createFromSystemTime($epocheDay,'1970-01-01',86400,"UTC");
$expected "2021-04-23 06:00:00";
$t->checkEqual((string)$date$expected); 
[0.017 ms]
'2021-04-23 06:00:00'
Ok
calculate Epoche Day from Dt 428 $dt Dt::create('2021-04-23 12:00:00','UTC');
$epocheDay Dt::create('1970-01-01','UTC')->diffTotal($dt,'Days');
$t->checkEqual($epocheDay18740.5); 
[0.038 ms]
18740.5
Ok
convert c# DateTime.ToBinary() to DateTime 433 $numFromCsharp = -8586307756854775808;  //2 bit kind + 62 bit ticks
//remove kind bits
$removeKindBits = function($num){
  if(
PHP_INT_SIZE 4) return (int)$num 0x3fffffffffffffff;
  if(
$num 0$num += 9223372036854775808;
  
$b2 4611686018427387903;
  if(
$num $b2$num -= $b2;
  return 
$num;
};
$ticks $removeKindBits($numFromCsharp);
$date Dt::createFromSystemTime($ticks,'0001-1-1',1.E-7,"UTC");
$expected "2019-10-11 22:00:00";
$t->checkEqual((string)$date$expected); 
[0.014 ms]
'2019-10-11 22:00:00'
Ok
Create Date from not valid String 450 $t->setErrorLevel(0);//error reporting off for this test
$date Dt::create('31.0x.2015');
$t->restoreErrorLevel();
$t->checkEqual($datefalse); 
User Warning: Error Method Jspit\Dt::create, Message: Failed to parse time string (31.0x.2015) at position 0 (3): Unexpected character stack trace#0 /mnt/web008/c0/70/5508370/htdocs/pju24/class/Jspit/Dt.php(124): DateTime->__construct() #1 /mnt/web008/c0/70/5508370/htdocs/pju24/class/Jspit/Dt.php(193): Jspit\Dt->__construct() #2 /mnt/web008/c0/70/5508370/htdocs/pju24/check/phpcheck.jspit.dt.php(451): Jspit\Dt::create() #3 {main} (Dt.php line 196)
[0.044 ms]
false
Ok
Get last Errormassage 457 $errorInfo Dt::getLastErrorsAsString() ;
$t->check($errorInfo$errorInfo != ''); 
[0.008 ms]
'Unexpected character(e)'
Ok
Parse a invalid Date: 31.02. 461 $date Dt::create('31.02.2015'); //set to 2015-03-03
$t->checkEqual((string)$date'2015-03-03 00:00:00'); 
[0.016 ms]
'2015-03-03 00:00:00'
Ok
getErrorInfo() 465 $errInfo $date->getErrorInfo();
$t->check($errInfo, !empty($errInfo)); 
[0.008 ms]
'The parsed date was invalid(w)'
Ok
Parse a invalid Date with StrictMode 469 Dt::setStrictModeCreate(true); //default false
$date Dt::create('31.02.2015');
$t->checkEqual($datefalse); 
[0.011 ms]
false
Ok
Create Date with regular Expressions 474 $str '24 December';
$regEx '~(?<d>\d{1,2}) (?<F>\w+)~';
$dateTemplate "1.1.2010 18:00";
$date Dt::createFromRegExFormat($regEx,$str,null,$dateTemplate);
$t->checkEqual((string)$date,'2010-12-24 18:00:00'); 
[0.105 ms]
'2010-12-24 18:00:00'
Ok
Create Date with regular Expressions 481 $str '2.5 19 Uhr 30';
$regEx '~(?<d>\d{1,2})\.(?<m>\d{1,2}) ?(?<H>\d{1,2}) Uhr (?<i>\d{1,2})~';
$date Dt::createFromRegExFormat($regEx,$str);
$t->checkEqual((string)$date,date('Y').'-05-02 19:30:00'); 
[0.089 ms]
'2026-05-02 19:30:00'
Ok
Create Date with regular Expressions and negative Year 487 $str '-45/8';
$regEx '~^(?<Y>-?[\d]{1,4})/(?<m>\d{1,2})$~';
$dateTemplate "0000-01-01";
$date Dt::createFromRegExFormat($regEx,$str,null,$dateTemplate);
$t->checkEqual((string)$date,'-0045-08-01 00:00:00'); 
[0.076 ms]
'-0045-08-01 00:00:00'
Ok
get matches from last RegEx 494 $matches $date->getMatchLastCreateRegEx(); 
$expected = [
  
=> "-45/8",
  
'Y' => "-45",
  
=> "-45",
  
'm' => "8",
  
=> "8",
];
$t->checkEqual($matches,$expected); 
[0.001 ms]
array ( 0 => '-45/8', 'Y' => '-45', 1 => '-45', 'm' => '8', 2 => '8', )
Ok
Create date using a array of regular expressions 505 $regEx = [
  
'~^(?<d>\d{2})/(?<m>\d{2})/(?<Y>\d{4})$~',
  
'~^(?<d>\d{2})/(?<M>\p{L}+)/(?<Y>\d{4})$~iu'
];
$date1 Dt::createFromRegExFormat($regEx "18/Feb/2020");
$date2 Dt::createFromRegExFormat($regEx "05/07/1968");
$result $date1.'|'.$date2;
$expected '2020-02-18 00:00:00|1968-07-05 00:00:00';
$t->checkEqual($result,$expected); 
[0.187 ms]
'2020-02-18 00:00:00|1968-07-05 00:00:00'
Ok
createFromRegExFormat with strict Mode 516 $t->setErrorLevel(0);//error reporting off for this test
Dt::setStrictModeCreate(true);
$regEx '~^(?<d>\d{2})(?<m>\d{2})(?<Y>\d{4})$~';
$dt Dt::createFromRegExFormat($regEx,'33112022');
Dt::setStrictModeCreate(false);
$t->restoreErrorLevel();
$t->checkEqual($dt,false); 
User Warning: The parsed date was invalid. Method Jspit\Dt::createFromRegExFormat, Message: invalid Date String in phpcheck.jspit.dt.php Line 519 (Dt.php line 282)
[0.080 ms]
false
Ok
format with German short Weekday 526 $strDate Dt::create('2014-12-20')->formatL('D, d.m.Y','de');
$t->checkEqual($strDate,'Sam, 20.12.2014'); 
[0.087 ms]
'Sam, 20.12.2014'
Ok
format with English short Weekday 530 $strDate Dt::create('2014-12-20')->formatL('D, d.m.Y','en');
$t->checkEqual($strDate,'Sat, 20.12.2014'); 
[0.015 ms]
'Sat, 20.12.2014'
Ok
IntlDateFormatter exists: language "fr" 536 Dt::setDefaultLanguage('en');  
$strDate Dt::create('14.1.2015')->formatL('l, d F Y','fr');  
$t->checkEqual($strDate,'mercredi, 14 janvier 2015'); 
[0.017 ms]
'mercredi, 14 janvier 2015'
Ok
format are IntlDateFormatter Constants 541 $strDate Dt::create('14.1.2015')->formatL('FULL+SHORT','pl');  
$t->checkEqual($strDate,'środa, 14 stycznia 2015 00:00'); 
[6.897 ms]
'środa, 14 stycznia 2015 00:00'
Ok
format with buddhist calendar 545 $strDate Dt::create('14.1.2015 16:45')->formatL('FULL+SHORT','es_ES@calendar=buddhist');  
$t->checkContains($strDate,'miércoles,14,enero,2558,BE,16:45'); 
[0.460 ms]
'miércoles, 14 de enero de 2558 BE, 16:45'
Ok

Test incomplete: Fatal Error