【发布时间】:2011-10-26 06:00:29
【问题描述】:
我正在使用 cakephp 1.2.6 创建一个 Web 应用程序。我需要一个功能来保存用户以 GMT 格式输入的时间。我正在使用下面的方法来做到这一点。
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 偏移量是不够的。您需要询问他的时区。
-
用户从下拉列表中选择他/她的时区。但是我怎样才能从中获得带有 DST 的 GMT 时间呢?
标签: php cakephp cakephp-1.2