atk4\data\tests\TypecastingTest::testTypecastTimezone PHP Method

testTypecastTimezone() public method

    public function testTypecastTimezone()
    {
        $db = new Persistence_SQL($this->db->connection);
        $m = new Model($db, 'event');
        $dt = $m->addField('dt', ['type' => 'datetime', 'persist_timezone' => 'EEST']);
        $d = $m->addField('d', ['type' => 'date', 'persist_timezone' => 'EEST']);
        $t = $m->addField('t', ['type' => 'time', 'persist_timezone' => 'EEST']);
        date_default_timezone_set('UTC');
        $s = new \DateTime('Monday, 15-Aug-05 22:52:01 UTC');
        $this->assertEquals('2005-08-16 00:52:01', $db->typecastSaveField($dt, $s));
        $this->assertEquals('2005-08-15', $db->typecastSaveField($d, $s));
        $this->assertEquals('22:52:01', $db->typecastSaveField($t, $s));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05 22:52:01 UTC'), $db->typecastLoadField($dt, '2005-08-16 00:52:01'));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05'), $db->typecastLoadField($d, '2005-08-15'));
        $this->assertEquals(new \DateTime('22:52:01'), $db->typecastLoadField($t, '22:52:01'));
        date_default_timezone_set('Asia/Tokyo');
        $s = new \DateTime('Monday, 15-Aug-05 22:52:01 UTC');
        $this->assertEquals('2005-08-16 00:52:01', $db->typecastSaveField($dt, $s));
        $this->assertEquals('2005-08-15', $db->typecastSaveField($d, $s));
        $this->assertEquals('22:52:01', $db->typecastSaveField($t, $s));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05 22:52:01 UTC'), $db->typecastLoadField($dt, '2005-08-16 00:52:01'));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05'), $db->typecastLoadField($d, '2005-08-15'));
        $this->assertEquals(new \DateTime('22:52:01'), $db->typecastLoadField($t, '22:52:01'));
        date_default_timezone_set('America/Los_Angeles');
        $s = new \DateTime('Monday, 15-Aug-05 22:52:01');
        // uses servers default timezone
        $this->assertEquals('2005-08-16 07:52:01', $db->typecastSaveField($dt, $s));
        $this->assertEquals('2005-08-15', $db->typecastSaveField($d, $s));
        $this->assertEquals('22:52:01', $db->typecastSaveField($t, $s));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05 22:52:01 America/Los_Angeles'), $db->typecastLoadField($dt, '2005-08-16 07:52:01'));
        $this->assertEquals(new \DateTime('Monday, 15-Aug-05'), $db->typecastLoadField($d, '2005-08-15'));
        $this->assertEquals(new \DateTime('22:52:01'), $db->typecastLoadField($t, '22:52:01'));
    }