2014-10-09 2 views
1

Я использую PHP отправить календарь ICS пригласить используя эту замечательную функцию:ческого события с PHP, начиная с 08:00, независимо от аргумента

function sendIcalEmail($firstname,$lastname,$email,$meeting_date,$meeting_name,$meeting_duration,$address,$details) { 

     $from_name = "Jason"; 
     $from_address = "[email protected]"; 
     $subject = "Showing"; //Doubles as email subject and meeting subject in calendar 
     $meeting_description = $details; 
     $meeting_location = $address; //Where will your meeting take place 
     $message=''; 

     //Convert MYSQL datetime and construct iCal start, end and issue dates 
     $meetingstamp = STRTOTIME($meeting_date . " UTC"); 
     $dtstart= GMDATE("Ymd\THis\Z",$meetingstamp); 
     $dtend= GMDATE("Ymd\THis\Z",$meetingstamp+$meeting_duration); 
     $todaystamp = GMDATE("Ymd\THis\Z"); 

     echo 'start:'.$dtstart.'<br><br>'; 
     echo 'end:'.$dtend.'<br><br>'; 

     //Create unique identifier 
     $cal_uid = DATE('Ymd').'T'.DATE('His')."-".RAND()."@mydomain.com"; 

     //Create Mime Boundry 
     $mime_boundary = "----Meeting Booking----".MD5(TIME()); 

     //Create Email Headers 
     $headers = "From: ".$from_name." <".$from_address.">\n"; 
     $headers .= "Reply-To: ".$from_name." <".$from_address.">\n"; 

     $headers .= "MIME-Version: 1.0\n"; 
     $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n"; 
     $headers .= "Content-class: urn:content-classes:calendarmessage\n"; 

     //Create Email Body (HTML) 
     $message .= "--$mime_boundary\n"; 
     $message .= "Content-Type: text/html; charset=UTF-8\n"; 
     $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

     $message .= "<html>\n"; 
     $message .= "<body>\n"; 
     //$message .= '<p>Dear '.$firstname.' '.$lastname.',</p>'; 
     //$message .= '<p>Here is my HTML Email/Used for Meeting Description</p>'; 
     $message .= "</body>\n"; 
     $message .= "</html>\n"; 
     $message .= "--$mime_boundary\n"; 

     //Create ICAL Content (Google rfc 2445 for details and examples of usage) 
     $ical = 'BEGIN:VCALENDAR 
    PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN 
    VERSION:2.0 
    METHOD:PUBLISH 
    BEGIN:VEVENT 
    ORGANIZER:MAILTO:'.$from_address.' 
    DTSTART:'.$dtstart.' 
    DTEND:'.$dtend.' 
    LOCATION:'.$meeting_location.' 
    TRANSP:OPAQUE 
    SEQUENCE:0 
    UID:'.$cal_uid.' 
    DTSTAMP:'.$todaystamp.' 
    DESCRIPTION:'.$meeting_description.' 
    SUMMARY:'.$subject.' 
    PRIORITY:5 
    CLASS:PUBLIC 
    END:VEVENT 
    END:VCALENDAR'; 

     $message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST\n'; 
     $message .= "Content-Transfer-Encoding: 8bit\n\n"; 
     $message .= $ical; 

     //SEND MAIL 
     $mail_sent = @MAIL($email, $subject, $message, $headers); 

     IF($mail_sent)  { 
      RETURN TRUE; 
     } ELSE { 
      RETURN FALSE; 
     } 

    } 

На моем телефоне я вижу следующее, как дата/время:

четверг 9 октября 2014

с 08:00 до 09:00

с 12:00 до 13:00 (GMT)

, где мой и из аргументов являются следующие:

start:20141009T120000Z 

    end:20141009T130000Z 

Так мне 08:00 и 09:00 неожиданны. Но, может быть, я что-то упустил.

+2

Ваш часовой пояс? Ваша программа, вероятно, показывает время оригинала в UTC/GMT и добавляет время в ваш часовой пояс. 12-13 UTC - это то же самое, что и 8-9 утра ET с дневным светом – Cheery

+0

. потому что это ответ. –

ответ

0

Ваш часовой пояс? Вероятно, ваша программа показывает исходное время в UTC/GMT (буква Z - Zulu в timestamp) и добавляет время в ваш часовой пояс. 12:00 - 13:00 UTC совпадает с 8:00 - 9:00 по восточному времени с дневным светом. Установите правильный часовой пояс в начале и в конце.