2011-05-05 22 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