public function testParseLocalTime()
 {
     $u = new PhabricatorUser();
     $u->setTimezoneIdentifier('UTC');
     $v = new PhabricatorUser();
     $v->setTimezoneIdentifier('America/Los_Angeles');
     $t = 1370202281;
     // 2013-06-02 12:44:41 -0700
     $time = PhabricatorTime::pushTime($t, 'America/Los_Angeles');
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('now', $u));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('now', $v));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 12:44:41 -0700', $u));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 12:44:41 -0700', $v));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 12:44:41 PDT', $u));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 12:44:41 PDT', $v));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 19:44:41', $u));
     $this->assertEqual($t, PhabricatorTime::parseLocalTime('2013-06-02 12:44:41', $v));
     $this->assertEqual($t + 3600, PhabricatorTime::parseLocalTime('+1 hour', $u));
     $this->assertEqual($t + 3600, PhabricatorTime::parseLocalTime('+1 hour', $v));
     unset($time);
     $t = 1370239200;
     // 2013-06-02 23:00:00 -0700
     $time = PhabricatorTime::pushTime($t, 'America/Los_Angeles');
     // For the UTC user, midnight was 6 hours ago because it's early in the
     // morning for htem. For the PDT user, midnight was 23 hours ago.
     $this->assertEqual($t + -6 * 3600 + 60, PhabricatorTime::parseLocalTime('12:01:00 AM', $u));
     $this->assertEqual($t + -23 * 3600 + 60, PhabricatorTime::parseLocalTime('12:01:00 AM', $v));
     unset($time);
 }
 public function testLocalTimeFormatting()
 {
     $user = new PhabricatorUser();
     $user->setTimezoneIdentifier('America/Los_Angeles');
     $utc = new PhabricatorUser();
     $utc->setTimezoneIdentifier('UTC');
     $this->assertEqual('Jan 1 2000, 12:00 AM', phabricator_datetime(946684800, $utc), 'Datetime formatting');
     $this->assertEqual('Jan 1 2000', phabricator_date(946684800, $utc), 'Date formatting');
     $this->assertEqual('12:00 AM', phabricator_time(946684800, $utc), 'Time formatting');
     $this->assertEqual('Dec 31 1999, 4:00 PM', phabricator_datetime(946684800, $user), 'Localization');
     $this->assertEqual('', phabricator_datetime(0, $user), 'Missing epoch should fail gracefully');
 }
 public function testTimestampsStartDay()
 {
     $u = new PhabricatorUser();
     $u->setTimezoneIdentifier('America/Los_Angeles');
     $days = $this->getAllDays();
     foreach ($days as $day) {
         $data = CalendarTimeUtil::getTimestamps($u, $day, 1);
         $this->assertEqual($day, $data['epoch_stamps'][0]->format('l'));
     }
     $t = 1370202281;
     // 2013-06-02 12:44:41 -0700 -- a Sunday
     $time = PhabricatorTime::pushTime($t, 'America/Los_Angeles');
     foreach ($days as $day) {
         $data = CalendarTimeUtil::getTimestamps($u, $day, 1);
         $this->assertEqual($day, $data['epoch_stamps'][0]->format('l'));
     }
     unset($time);
 }