php中的时区转换



我在google日历中的默认时区是太平洋时间(GMT-08:00)。现在我生成一个会议请求并邀请两个人。
1)一个人的日历上的默认时区是(GMT+05:30)太平洋时间,他的电子邮件是通过microsoft exchange服务器发送的。
2)第二,我邀请一个人的gmail帐户上的默认时区是(GMT+05:30)。
我查看的ics文件中DTSTART为DTSTART:20110506T170000Z,它的意思是像
yyyymmdd T hhmmss,所以这里的时间在gmail中是正确的。
但是第一个查看microsoft的人得到DTSTART:20110506T070000Z,所以这里我的问题是如何转换时区,使两者相同…

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

这里我的时区是美国/洛杉矶,那么我应该使用哪个函数来获得正确的计时…????

$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('YmdTHisZ');
echo $end->format('YmdTHisZ');

日期格式字符串中应该是大写的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('YmdTHisZ');
echo "n";
echo $end->format('YmdTHisZ');

导致

20110507T170000Z
20110507T180000Z

相关内容

  • 没有找到相关文章

最新更新