public function ParsePostData() { if (array_key_exists($this->strControlId . '_lstMonth', $_POST) || array_key_exists($this->strControlId . '_lstHour', $_POST)) { $dttNewDateTime = new QDateTime(); // Update Date Component switch ($this->strDateTimePickerType) { case QDateTimePickerType::Date: case QDateTimePickerType::DateTime: case QDateTimePickerType::DateTimeSeconds: $strKey = $this->strControlId . '_lstMonth'; if (array_key_exists($strKey, $_POST)) { $intMonth = $_POST[$strKey]; } else { $intMonth = null; } $strKey = $this->strControlId . '_lstDay'; if (array_key_exists($strKey, $_POST)) { $intDay = $_POST[$strKey]; } else { $intDay = null; } $strKey = $this->strControlId . '_lstYear'; if (array_key_exists($strKey, $_POST)) { $intYear = $_POST[$strKey]; } else { $intYear = null; } $this->intSelectedMonth = $intMonth; $this->intSelectedDay = $intDay; $this->intSelectedYear = $intYear; if (strlen($intYear) && strlen($intMonth) && strlen($intDay)) { $dttNewDateTime->setDate($intYear, $intMonth, $intDay); } else { $dttNewDateTime->Year = null; } break; } // Update Time Component switch ($this->strDateTimePickerType) { case QDateTimePickerType::Time: case QDateTimePickerType::TimeSeconds: case QDateTimePickerType::DateTime: case QDateTimePickerType::DateTimeSeconds: $strKey = $this->strControlId . '_lstHour'; if (array_key_exists($strKey, $_POST)) { $intHour = $_POST[$strKey]; if (strlen($intHour)) { $intHour = $_POST[$this->strControlId . '_lstHour']; $intMinute = $_POST[$this->strControlId . '_lstMinute']; $intSecond = 0; if ($this->strDateTimePickerType == QDateTimePickerType::TimeSeconds || $this->strDateTimePickerType == QDateTimePickerType::DateTimeSeconds) { $intSecond = $_POST[$this->strControlId . '_lstSecond']; } if (strlen($intHour) && strlen($intMinute) && strlen($intSecond)) { $dttNewDateTime->setTime($intHour, $intMinute, $intSecond); } else { $dttNewDateTime->Hour = null; } } } break; } // Update local intTimestamp $this->dttDateTime = $dttNewDateTime; } }
public function testTimeZoneIssues() { $tz = new DateTimeZone('America/Los_Angeles'); $dt1 = new QDateTime('11/02/14', $tz); // dst boundary date $this->assertEquals('America/Los_Angeles', $dt1->getTimezone()->getName()); $dt2 = new QDateTime($dt1, null, QDateTime::DateOnlyType); $this->assertEquals('America/Los_Angeles', $dt2->getTimezone()->getName()); $this->assertTrue($dt2->IsTimeNull()); $dt2->setTime(7, 0, 0); $this->assertEquals(7, $dt2->Hour); $this->assertEquals('America/Los_Angeles', $dt2->getTimezone()->getName()); // Test a specific PHP 'bug'. Not sure if it is a bug, or just a way things work. $dt2 = new QDateTime($dt1->format(DateTime::ISO8601), null, QDateTime::DateOnlyType); $dt2->setTime(7, 0, 0); $this->assertEquals(7, $dt2->Hour); $dt2 = new QDateTime('1/1/14', new DateTimeZone('America/Los_Angeles')); $dt2->Timestamp = 1288486753; $this->assertEquals('America/Los_Angeles', $dt2->getTimezone()->getName()); // make sure timezone isn't changed $this->assertEquals(1288486753, $dt2->Timestamp); // this isn't always true. If this is a dst boundary, it will not be true. Just making sure it is true when its supposed to be }