122 lines
5.0 KiB
PHP
122 lines
5.0 KiB
PHP
<?php
|
|
namespace nulib\php\time;
|
|
|
|
use DateTimeZone;
|
|
use nulib\tests\TestCase;
|
|
|
|
class MutableDateTimeTest extends TestCase {
|
|
function testDateTime() {
|
|
$date = new MutableDateTime("2024-04-05 09:15:23");
|
|
|
|
self::assertEquals("05/04/2024 09:15:23", $date->format());
|
|
self::assertEquals("05/04/2024 09:15:23", strval($date));
|
|
self::assertSame(2024, $date->year);
|
|
self::assertSame(4, $date->month);
|
|
self::assertSame(5, $date->day);
|
|
self::assertSame(9, $date->hour);
|
|
self::assertSame(15, $date->minute);
|
|
self::assertSame(23, $date->second);
|
|
self::assertSame(5, $date->wday);
|
|
self::assertSame(14, $date->wnum);
|
|
self::assertEquals("+04:00", $date->timezone);
|
|
self::assertSame("05/04/2024 09:15:23", $date->datetime);
|
|
self::assertSame("05/04/2024", $date->date);
|
|
self::assertSame("20240405", $date->Ymd);
|
|
self::assertSame("20240405T091523", $date->YmdHMS);
|
|
self::assertSame("20240405T091523+04:00", $date->YmdHMSZ);
|
|
}
|
|
|
|
function testDateTimeZ() {
|
|
$date = new MutableDateTime("20240405T091523");
|
|
self::assertSame("20240405T091523+04:00", $date->YmdHMSZ);
|
|
|
|
$date = new MutableDateTime("20240405T091523+02:00", null, null);
|
|
self::assertSame("20240405T111523+04:00", $date->YmdHMSZ);
|
|
$date = new MutableDateTime("20240405T091523+02:00", null, true);
|
|
self::assertSame("20240405T111523+04:00", $date->YmdHMSZ);
|
|
$date = new MutableDateTime("20240405T091523+02:00", null, false);
|
|
self::assertSame("20240405T091523+02:00", $date->YmdHMSZ);
|
|
|
|
$newtz = new DateTimeZone("+06:00");
|
|
$date = new MutableDateTime("20240405T091523+02:00", $newtz, null);
|
|
self::assertSame("20240405T091523+02:00", $date->YmdHMSZ);
|
|
$date = new MutableDateTime("20240405T091523+02:00", $newtz, false);
|
|
self::assertSame("20240405T091523+02:00", $date->YmdHMSZ);
|
|
$date = new MutableDateTime("20240405T091523+02:00", $newtz, true);
|
|
self::assertSame("20240405T131523+06:00", $date->YmdHMSZ);
|
|
}
|
|
|
|
function testClone() {
|
|
$date = new MutableDateTime("now");
|
|
$clone = $date->clone(true);
|
|
self::assertInstanceOf(MutableDateTime::class, $clone);
|
|
$clone = $date->clone();
|
|
self::assertInstanceOf(DateTime::class, $clone);
|
|
}
|
|
|
|
function testConstruct() {
|
|
$Y = date("Y");
|
|
self::assertSame("05/04/$Y 00:00:00", strval(new MutableDateTime("5/4")));
|
|
self::assertSame("05/04/2024 00:00:00", strval(new MutableDateTime("5/4/24")));
|
|
self::assertSame("05/04/2024 00:00:00", strval(new MutableDateTime("5/4/2024")));
|
|
self::assertSame("05/04/2024 00:00:00", strval(new MutableDateTime("05/04/2024")));
|
|
self::assertSame("05/04/2024 00:00:00", strval(new MutableDateTime("20240405")));
|
|
self::assertSame("05/04/2024 00:00:00", strval(new MutableDateTime("240405")));
|
|
self::assertSame("05/04/2024 09:15:23", strval(new MutableDateTime("20240405T091523")));
|
|
self::assertSame("05/04/2024 13:15:23", strval(new MutableDateTime("20240405T091523Z")));
|
|
self::assertSame("05/04/2024 09:15:23", strval(new MutableDateTime("5/4/2024 9:15:23")));
|
|
self::assertSame("05/04/2024 09:15:23", strval(new MutableDateTime("5/4/2024 9.15.23")));
|
|
self::assertSame("05/04/2024 09:15:00", strval(new MutableDateTime("5/4/2024 9:15")));
|
|
self::assertSame("05/04/2024 09:15:00", strval(new MutableDateTime("5/4/2024 9.15")));
|
|
self::assertSame("05/04/2024 09:15:00", strval(new MutableDateTime("5/4/2024 9h15")));
|
|
self::assertSame("05/04/2024 09:15:23", strval(new MutableDateTime("5/4/2024 09:15:23")));
|
|
self::assertSame("05/04/2024 09:15:00", strval(new MutableDateTime("5/4/2024 09:15")));
|
|
self::assertSame("05/04/2024 09:15:00", strval(new MutableDateTime("5/4/2024 09h15")));
|
|
}
|
|
|
|
function testCompare() {
|
|
$a = new MutableDateTime("10/02/2024");
|
|
$a2 = new MutableDateTime("10/02/2024 8:30");
|
|
$a3 = new MutableDateTime("10/02/2024 15:45");
|
|
$b = new MutableDateTime("15/02/2024");
|
|
$b2 = new MutableDateTime("15/02/2024 8:30");
|
|
$b3 = new MutableDateTime("15/02/2024 15:45");
|
|
$x = new MutableDateTime("10/02/2024");
|
|
$x2 = new MutableDateTime("10/02/2024 8:30");
|
|
$x3 = new MutableDateTime("10/02/2024 15:45");
|
|
|
|
self::assertTrue($a == $x);
|
|
self::assertFalse($a === $x);
|
|
self::assertTrue($a2 == $x2);
|
|
self::assertTrue($a3 == $x3);
|
|
|
|
self::assertFalse($a < $a);
|
|
self::assertTrue($a < $a2);
|
|
self::assertTrue($a < $a3);
|
|
self::assertTrue($a < $b);
|
|
self::assertTrue($a < $b2);
|
|
self::assertTrue($a < $b3);
|
|
|
|
self::assertTrue($a <= $a);
|
|
self::assertTrue($a <= $a2);
|
|
self::assertTrue($a <= $a3);
|
|
self::assertTrue($a <= $b);
|
|
self::assertTrue($a <= $b2);
|
|
self::assertTrue($a <= $b3);
|
|
|
|
self::assertTrue($b > $a);
|
|
self::assertTrue($b > $a2);
|
|
self::assertTrue($b > $a3);
|
|
self::assertFalse($b > $b);
|
|
self::assertFalse($b > $b2);
|
|
self::assertFalse($b > $b3);
|
|
|
|
self::assertTrue($b >= $a);
|
|
self::assertTrue($b >= $a2);
|
|
self::assertTrue($b >= $a3);
|
|
self::assertTrue($b >= $b);
|
|
self::assertFalse($b >= $b2);
|
|
self::assertFalse($b >= $b3);
|
|
}
|
|
}
|