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')); }