我在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