很可能有很多库可以解析 .ics 文件,但我将向您展示一个非常适合我的示例。
我用过这个库:http ://www.phpclasses.org/browse/file/16660.html
它为您处理不同类型的 ICal 组件提供了很大的灵活性:VEVENT、VTODO、VJOURNAL、VFREEBUSY、VALARM 和 VTIMEZONE(您要询问的那个)。
例子:
<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);