示例#1
0
 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'));
 }