我需要帮助转换使用GMT时间的日期和时间。目前我正在使用Convertdatetime
使用时区,但我需要根据GMT选择转换日期和时间,仅使用GMT,now()
函数用于将日期和时间存储到{ {3}}(服务器时间)?
例如(2012/08/11 18:45:00) 阿富汗 到2012年8月11日星期六下午5:43
安道尔 下午3:16 2012年8月11日星期六
<option value="Afghanistan">(GMT+4:30) Afghanistan</option>
<option value="Andorra">(GMT +1:00) Andorra</option>
<option value="United Arab Emirates">(GMT +04:00) United Arab Emirates</option>
<option value="Antigua and Barbuda">(GMT +04:00) Antigua and Barbuda</option>
function Convertdatetime($gmttime,$timezoneRequired)
{
$system_timezone = date_default_timezone_get();
$local_timezone = $timezoneRequired;
date_default_timezone_set($local_timezone);
$local = date("Y-m-d h:i:s A");
date_default_timezone_set("GMT");
$gmt = date("Y-m-d h:i:s A");
date_default_timezone_set($system_timezone);
$diff = (strtotime($gmt) - strtotime($local));
$date = new DateTime($gmttime);
$date->modify("+$diff seconds");
$timestamp = $date->format("m-d-Y H:i:s");
return $timestamp;
}
ConvertLocalTimezoneToGMT('2012-08-11 17:24:00.000','Asia/Calcutta');
输出:11-08-2012 11:54:00 || GMT = IST-5.5
答案 0 :(得分:1)
要更改时区,您只需使用setter setTimezone :
$systemTz = new DateTimezone($system_timezone);
$gmt = new DateTimeZone('GMT');
$serverTz = new dateTimezone($server_timezone);
$dateServer = new DateTime($sqlResult['date_column'],$serverTz);
$gmt = clone $dateServer;
$gmt->setTimezone($gmt);
$dateSyst = clone DateServer;
$dateSyst->setTimezone($systemTz);
然后你可以根据需要格式化它们。
答案 1 :(得分:0)
以下代码可以为您提供不同时区的秒数差异:
$timezone = new DateTimeZone("Asia/Karachi");
$offset = $timezone->getOffset(new DateTime("now"));
将Asia/Karachi
替换为用户选择的内容,而不是将这些秒添加到时间
DateTimeZone :: getOffset - 返回GMT
的时区偏移量