Timezones destekler PHP icalendar ayrıştırıcı

1 Cevap php

Ben bir iCalendar (ICS) dosyasını ayrıştırmak ve doğru timezones işleyebilir bir PHP sınıfı arıyorum.

Ben zaten bir ICS Parser kendimi yarattı ama sadece ('Europe / Paris' gibi) PHP bilinen timezones işleyebilir.

Ne yazık ki, Evrim (Ubuntu'nun varsayılan takvim yazılım) tarafından oluşturulan ICS dosyası varsayılan zaman dilimi kimliklerini kullanmak değildir. Bu aynı zamanda, belirli bir saat dilimi kimliği ihracat diliminin tam tanımı ile olayları verir: gün ışığından yararlanma tarihleri, nüks kural ve tüm zor şeyler dilimleri hakkında anlamak için.

Bu benim için çok fazla. O benim kız arkadaşım için sadece küçük bir yardımcı program olduğundan, ben daha iCalendar özellikleri araştırmak ve tam şişmiş icalendar Parser kendim yaratmak için zaman olmayacaktır.

Yani dilimleri tanımlarını ayrıştırmak iCalendar dosya biçimi PHP bilinen herhangi bir uygulama var?

1 Cevap

Büyük olasılıkla orada ayrıştırmak. Ics dosyalarını kütüphanelerin bir yeri vardır, ama size oldukça iyi benim için çalışıyor bir örnek göstereceğim.

Ben bu kütüphaneyi kullandım: http://www.phpclasses.org/browse/file/16660.html

VEVENT, vToDo dosyaları, VJOURNAL, VFREEBUSY, VALARM ve VTIMEZONE (hakkında soran bir): Bu ICal bileşenleri farklı işleme size bir esneklik verir.

Example:

<pre><?php

//
// Open library
//
require_once( "iCalcreator.class.php" ) ;

//
// Demo ICal file contents
//
$string = <<<EOS
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:19870101T000000Z
BEGIN:STANDARD
DTSTART:19971026T020000
RDATE:19971026T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19971026T020000
RDATE:19970406T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
EOS
;

//
// There is no direct string parsing functionality,
// so first create a temporary file
//
$filename = tempnam( ".", "" ) ;
$f = fopen($filename,"w") ;
fwrite( $f, $string );
fclose($f);

//
// ... parse it into an object
//
$var = new vcalendar();
$var->parse($filename);
var_dump( $var );
$event = $var->components[0] ;
var_dump( $event->createDtstamp() );


//
// ... and finally remove all temporary data.
//
unlink($filename);