2011-05-05 46 views
0

我在谷歌日曆中的默認時區是(GMT-08:00)太平洋時間。現在我生成一個會議請求並邀請兩個人。
1)一個人的日曆中的默認時區是(GMT + 05:30)太平洋時間,他的電子郵件是通過微軟交換服務器進入的。
2)第二,我邀請一個使用默認時區爲(GMT + 05:30)的gmail賬戶的人。
我查看的ics文件有DTSTART作爲DTSTART:20110506T170000Z它只是意味着像
yyyymmdd T hhmmss所以這裏的時間來適當在Gmail中。
但觀察微軟的第一人得到DTSTART:20110506T070000Z所以在這裏,我的問題是,如何轉換時區,這樣既來自同一...在php中的時區轉換

date_default_timezone_set($timezonename[0]->timzone_val); 
$meetingstamp = strtotime($meeting_date." ".$timezonename[0]->timzone_val); 
$dtstart= gmdate("Ymd\This\Z",$meetingstamp); 
$dtend= gmdate("Ymd\This\Z",$meetingstamp+$meeting_duration); 
$todaystamp = gmdate("Ymd\This\Z"); 

這裏我timzone當屬美洲/洛杉磯所以如何這功能應我用來獲得適當的時間...... ????

回答

1
$start = new DateTime($meeting_date, new DateTimeZone($timezonename[0]->timzone_val); 
$start->setTimezone(new DateTimeZone('UTC')); 
$end = clone $start; 
$end->modify(sprintf('+ %d seconds', $meeting_duration)); 

echo $start->format('Ymd\THis\Z'); 
echo $end->format('Ymd\THis\Z'); 

它應該是在日期格式串的大寫H順便說一下,怎麼一回事,因爲小寫h表示我們在12豪特的格式。

編輯最後的評論後

$start = new DateTime('2011-05-07 10:00', new DateTimeZone('PDT')); 
$start->setTimezone(new DateTimeZone('UTC')); 
$end = clone $start; 
$end->modify(sprintf('+ %d seconds', 1*60*60)); 

echo $start->format('Ymd\THis\Z'); 
echo "\n"; 
echo $end->format('Ymd\THis\Z'); 

結果

20110507T170000Z 
20110507T180000Z 

這正是你想要得到的值。

+0

在我的服務器的日期時間類沒有啓用我想,我使用PHP 5.3.1所以從哪裏可以檢查它是啓用還是禁用。 – Jaimin 2011-05-05 11:18:35

+0

'DateTime'在PHP 5.2.0及更高版本中可用,它不能被禁用(據我所知)。所以如果你使用5.3.1,你應該使用'DateTime'類安全。 – 2011-05-05 11:22:31

+0

仍然是我越來越... 20110507T070000Z 20110507T080000Z – Jaimin 2011-05-05 11:27:28