2013-04-26 2 views
2

Я получил это календарное время:Как определить часовой пояс календаря в Outlook,

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
BEGIN:VEVENT 
UID:[email protected] 
DTSTAMP:20130426T133000Z 
DTSTART:20130426T133000Z 
DTEND:20130426T143000Z 
SUMMARY:New Test 
DESCRIPTION: - http://www.domain.com/content/new-test 
LOCATION: 
END:VEVENT 
END:VCALENDAR 

И дата и время сохраняются в DTSTAMP, DTSTART и DTEND, однако прогноз не по всей видимости, добавляется дополнительная информация о часовом поясе к этим датам. Есть ли способ сделать это? Я считаю, что Z в конце относится к часовому поясу Zulu или UTC. Неужели я ошибаюсь в этом предположении?

Как заставить Outlook распознать, что заданное время находится в EST, и изменить его, если пользователь находится в CST? Есть ли способ сделать это легко? (Я создаю файлы iCal/vCal автоматически, поэтому все, что есть в этом файле, я имею прямое управление). Я использую PHP для создания этого файла (технически генерируется модулем Drupal)

+0

прогноз хранит все в UTC, что делает его легче обрабатывать сбережения дневного света и изменение часовых поясов. –

ответ

1

20130426 - это формат YYYYMMDD 133000Z - 1330 это время GMT 00Z лишь некоторые дополнительные тексты

Хех, Я просто работал над этим на этой неделе здесь код я использую, чтобы сделать это:

// DISPLAY CALENDER EVENT 
$startdate = date('Ymd',strtotime($startdate)); //needs the YYYYMMDD format 
$enddate = date('Ymd',strtotime($enddate)); //ends the day before the set date. So the date range is startdate(inclusive) -> enddate(exclusive) 
$startTime = gmdate('Hi',mktime($startminutes,$startseconds)); // This is in greenwhich mean time. Have the users input time normally and simply 
                   //explode on : 
$endTime = gmdate('Hi',mktime($endminutes,$endseconds)); 
$subject = 'yeah'; 
$desc  = 'come to this meeting'; 
$location = 'wherever'; 

$ical = "BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
BEGIN:VEVENT 
UID:" . md5(uniqid(mt_rand(), true))." 
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z 
DTSTART:".$startdate."T".$startTime."00Z 
DTEND:".$enddate."T".$endTime."00Z 
LOCATION:$location 
SUMMARY:".$subject." 
DESCRIPTION:".$desc." 
END:VEVENT 
END:VCALENDAR"; 

//set correct content-type-header 
header('Content-type: text/calendar; charset=utf-8'); 
header('Content-Disposition: inline; filename=calendar.ics'); 
echo $ical; 

Этот сайт помог сделать это: http://www.daveismyname.com/development/adding-events-to-microsoft-outlook-from-php-using-ical/

Смежные вопросы