2016-11-05 15 views
0

OutlookとMacのカレンダーのstartTimeendTimeが以下のように正確な時刻に挿入されないのはなぜですか?iCaldendar - PHPはicsファイルにタイムゾーン、開始時刻、終了時刻をどのように正しく適用しますか?

入力:

$timezone = 'Europe/Luxembourg'; 
$startTime = "2016-11-03 18:00:00";   
$endTime = "2016-11-03 19:00:00"; 

iCalender.ics:

$icalender_for_outlook_n_osx = 
    'BEGIN:VCALENDAR' . "\r\n" . 
    'VERSION:2.0'. "\r\n" . 
    'PRODID:-//hacksw/handcal//NONSGML v1.0//EN'. 
    'BEGIN:VEVENT'. "\r\n" . 
    'DTEND:' . date("Ymd\THis", strtotime($endTime)) . "\r\n" . 
    'UID:'. uniqid() . "@".$domain . "\r\n". 
    'DTSTAMP:'. time() . "\r\n". 
    'LOCATION:' . $location . "\r\n". 
    'DESCRIPTION:'. $uri . "\r\n" . 
    'URL;VALUE=URI:' . $uri . "\r\n" . 
    'SUMMARY:'. $subject . "\r\n" . 
    'DTSTART:'. date("Ymd\THis", strtotime($startTime)) . "\r\n" . 
    'PRIORITY:5'. "\r\n" .   
    'END:VEVENT'. "\r\n" . 
    'END:VCALENDAR'. "\r\n"; 

OutlookやMacの中に開始時間と終了時間をカレンダーは私が持っている値を取得したことがない、背中や前方の数時間を示しているのいずれか埋め込み。上記の入力依頼と同じように、正確にPHPのタイムゾーンと開始日時を正確に入れますか?

+0

そのため、 'strtotime()'は '-'が使用されている場合、ヨーロッパの日付形式' d-m-y'としてタイムスタンプを解析します。 'date_create_from_format()'を使用したほうが良いかもしれません。 – Xorifelse

+0

'20161106T001126Z'と正確に時間を作成しましたが、カレンダーの中にカレンダーの中に日付を入れてもOKですが、時刻は01:11ですか? – YumYumYum

+0

'echo date(" Ymd \ THis "、strtotime(" 2016-11-03 18:00:00 "));'それは私に '20161103T180000'を与えます。これはあなたの' 0616は間違った日であり、時刻「001126」は0時間11分26秒である。 – Xorifelse

答えて

1

私は、strtotime()を避け、フォーマットから日付時刻を作成することを強く信じています。

$format = 'Y-m-d H:i:s'; 
$icalformat = 'Ymd\THis'; 
$startTime = '2016-11-03 18:00:00';   
$endTime = '2016-11-03 19:00:00'; 

echo DateTime::createFromFormat($format, $startTime)->format($icalformat); // 20161103T180000 
echo DateTime::createFromFormat($format, $endTime)->format($icalformat); // 20161103T190000 
関連する問題