我使用cakephp 1.2.6創建了一個Web應用程序。我需要一個功能來節省用戶以GMT格式輸入的時間。我使用下面的方法來做到這一點。CakePHP中的夏令時(DST)
function convertDateTimeToGMT($dateTimeStr,$fromTimeZone, $format = 'Y-m-d H:i:s') {
if (empty($dateTimeStr))
return $dateTimeStr;
else if (empty($fromTimeZone))
return $dateTimeStr;
else {
// Inverse the + or minus. Decimal value should be passed
//$timeHelper = new TimeHelper();
$newTZ = -1 * $fromTimeZone;
return $this->format($format, $dateTimeStr, null, $newTZ) ;
}
}
function format($format = 'd-m-Y', $date, $invalid = false, $userOffset = null) {
$date = $this->fromString($date, $userOffset);
if ($date === false && $invalid !== false) {
return $invalid;
}
return date($format, $date);
}
function fromString($dateString, $userOffset = null) {
if (empty($dateString)) {
return false;
}
if (is_int($dateString) || is_numeric($dateString)) {
$date = intval($dateString);
} else {
$date = strtotime($dateString);
}
if ($userOffset !== null) {
return $this->convert($date, $userOffset);
}
return $date;
}
function convert($serverTime, $userOffset) {
$serverOffset = $this->serverOffset();
$gmtTime = $serverTime - $serverOffset;
$userTime = $gmtTime + $userOffset * (60*60);
return $userTime;
}
convertDateTimeToGMT($dateTimeStr,$fromTimeZone, $format = 'Y-m-d H:i:s')
是,我打電話給我的代碼傳遞的日期時間和時區的方法。我有一個時區組合框,如果用戶選擇時區爲「太平洋」,它將通過-8作爲值$fromTimeZone
。但由於DST可以改變。
那麼有沒有辦法在cakephp中自動找到最新的時區值並將時間轉換爲GMT?
這就是爲什麼只要求對GMT的用戶補償不夠好。你需要問他的*時區*。 – deceze
用戶從下拉菜單中選擇他/她的時區。但是,如何從DST獲得DST的時間? – Shanaka