2016-04-05 19 views
0

Projemde icalendar kullanıyorum. Uygulamamın kullanıcının .ics dosyasını üretip verebileceği ve görünümüne aktarılabileceği bazı ayrıcalıklar var. Görünümde, kullanıcı bir etkinlik ekleyebilir ve ayrıca .ics dosyasını oluşturabilir ve takvime içe aktarabilir.Dışa Aktarım .ics dosyası farklı saat diliminde görünen datetime

"start_datetime" => "2016-04-06 18:00:00" //UTC Time 
    "end_datetime" => "2016-04-06 18:30:00" //UTC Time 
    "status" => null 
    "title" => "Free" 
    "description" => "" 
    "from" => "Dr Demo xprt02" 

o zamanlar .ics dönüş uygulamasına kullanıcı bakış dosyasını ithalatı yine görünümle gelen ihracat ve ithalat:

array:11 [▼ 
     "CLASS" => "PUBLIC" 
     "CREATED" => "20160405T073709Z" 
     "DTEND" => "20160406T130000Z" 
     "DTSTAMP" => "20160405T020700Z" 
     "DTSTART" => "20160406T123000Z" 
     "LAST-MODIFIED" => "20160405T073709Z" 
     "SEQUENCE" => "0" 
     "SUMMARY" => " Free" 
     "TRANSP" => "OPAQUE" 
     "UID" => "20160405T073649-31540-f4wd.com" 
     "X-MICROSOFT-CDO-BUSYSTATUS" => "BUSY" 
    ] 
konu kullanıcı ihracat .ics sonra aşağıdaki verileri içeren dosya dosyası zaman olduğu

.içerik içeriğini php'ye dönüştürdükten sonra.

"start_datetime" => "2016-04-06 12:30:00" 
    "end_datetime" => "2016-04-06 13:00:00" 
    "status" => null 
    "title" => "Free" 
    "description" => "" 
    "from" => "Dr Demo xprt02" 

görünümle aynı dosyayı aldıktan sonra startdatetime ve end_datetime böyle bir fark var neden bilmiyorum. Bence bakış UTC'de geri dönmüyor. Birisi bir fikri varsa lütfen paylaşın. Cevabı aldım

+0

Dönüştürülen php'yi değil, ics içeriğini göstermeniz gerekir. Elbette bir saat dilimi sorunu var. – fusion3k

+0

Her şeyden önce, gerçek ics dosyalarını karşılaştırmak için sizi özlüyorum (metin dosyaları, basit bir metin düzenleyicisiyle açın (Bkz. [Here] (http://apple.stackexchange.com/questions/125338/calendar-ical-ics- biçimi))), sonra özgün bir ics dosyasıyla (programınız tarafından oluşturulmamış) doğrulayın, görünümü dışa aktarın ve ardından davranışın aynı olup olmadığını görmek için dışa aktarın.O zaman sorunun senaryonuzdan olup olmadığını anlayabilirsiniz. – fusion3k

+0

@ fusion3k, bunu zaten yaptım. "CLASS" gibi bazı sütunlar => "PUBLIC, X-MICROSOFT-CDO-BUSYSTATUS vb." Ben .ics dosyasından (dış görünümden dışa aktarma) başvurduktan sonra yazımda kullandım. –

cevap

-1

. DTStart ve dtend ile TZID = UTC, ben kullanarak değildi

$ics = "BEGIN:VCALENDAR\n"; 
$ics .= "PRODID:-//F4WD TM//NONSGML F4WD//EN\n"; 
$ics .= "VERSION:2.0\n"; 
$ics .= "CALSCALE:GREGORIAN\n"; 
$ics .= "METHOD:PUBLISH\n"; // requied by Outlook 
$ics .= "X-WR-CALNAME:\n"; 
$ics .= "TZ:+00:\n"; 
$ics .= "BEGIN:VEVENT\n"; 
$ics .= "CLASS:PUBLIC\n"; 
$ics .= "CREATED:".date('Ymd', strtotime($v['start_datetime'])).'T'.date('His', strtotime($v['start_datetime']))."Z\n"; 
$ics .= "DTEND;TZID=UTC:".date('Ymd', strtotime($v['end_datetime'])).'T'.date('His', strtotime($v['end_datetime']))."Z\n"; 
$ics .= "DTSTAMP:".date('Ymd').'T'.date('His')."Z\n"; 
$ics .= "DTSTART;TZID=UTC:".date('Ymd', strtotime($v['start_datetime'])).'T'.date('His', strtotime($v['start_datetime']))."\n"; 
$ics .= "LAST-MODIFIED:".date('Ymd', strtotime($v['start_datetime'])).'T'.date('His', strtotime($v['start_datetime']))."\n"; 
$ics .= "SEQUENCE: 0\n"; 
$ics .= "SUMMARY: ".$v['title']. "\n"; 
$ics .= "TRANSP:OPAQUE \n"; 
$ics .= "UID:".date('Ymd').'T'.date('His')."-".rand()."-".$domain_url."\n"; 
$ics .= "DESCRIPTION:".$v['description']."\n"; 
$ics .= "X-MICROSOFT-CDO-BUSYSTATUS:BUSY".$v['status']."\n"; 
$ics .= "END:VEVENT\n"; 
$ics .= "END:VCALENDAR\n"; 

. Yani şimdi tüm iyi çalışıyor.

İlgili konular