ICS URL输出滞后5小时


ICS URL outputting 5 hours behind

我首先会说我不是PHP开发人员。因此,我让另一位开发人员创建了一个插件,它从Wordpress插件CalendarizeIt中获取开始和结束时间,并将其输出到格式化的ICS url中。问题是url输出的开始和结束时间比它应该输出的时间早了5个小时。

以下是插件PHP:

<?php
// Original script from http://jamiebicknell.tumblr.com/post/413492676/ics-generator-php-class#_=_
// Modified by Sean Carruthers
$start          = $_GET['start'];
$end            = $_GET['end'];
$name           = $_GET['name'];
$description    = $_GET['description'];
$location       = $_GET['location'];
$uid            = "kaneko" . strtotime("now");
$data = "BEGIN:VCALENDAR'r'nVERSION:2.0'r'nMETHOD:PUBLISH'r'nBEGIN:VEVENT'r'nDTSTART:".date("Ymd'THis'Z",$start)."'r'nDTEND:".date("Ymd'THis'Z",$end)."'r'nLOCATION:".$location."'r'nTRANSP: OPAQUE'r'nSEQUENCE:0'r'nUID:".$uid."'r'nDTSTAMP:".date("Ymd'THis'Z")."'r'nSUMMARY:".$name."'r'nDESCRIPTION:".$description."'r'nPRIORITY:1'r'nCLASS:PUBLIC'r'nEND:VEVENT'r'nEND:VCALENDAR";
header("Content-type:text/calendar; charset=utf-8");
header('Content-Disposition: inline; filename="'.$name.'.ics"');
echo $data;
?>

然后在Wordpress主题文件中:

<?php
$start_date = get_post_meta($post->ID, "fc_start", true);
$c_start_date = date("M j, Y",strtotime($start_date));
$end_date = get_post_meta($post->ID, "fc_end", true);
$c_end_date = date("M j, Y",strtotime($end_date));
$start_time = get_post_meta($post->ID, "fc_start_time", true);
$end_time = get_post_meta($post->ID, "fc_end_time", true);
$ics_args['start'] = strtotime($start_date . " " . $start_time);
$ics_args['end'] = strtotime($end_date . " " . $end_time);
$ics_args['name'] = get_the_title();
$ics_args['description'] = get_the_content();
$ics_args['location'] = get_post_meta($post->ID, "location", true);
$ics_url = plugins_url('kaneko/calendarize-it-mods/ics_event.php') . "?";
foreach($ics_args as $key => $value) {
   $ics_url .= "$key=$value&";
}
if($c_start_date == $c_end_date) {
   echo $c_start_date;
} else {
   echo $c_start_date . " - <br />" . $c_end_date;
}
?>

最后,$ics_url变量在锚标签中得到了响应,如下所示:

<a href="<?php echo $ics_url; ?>">

我曾尝试将插件的$uid变量中的strtotime更改为类似+5 hours的内容,但似乎不起作用。

如有任何帮助,我们将不胜感激。

哦,我还玩了一下在Wordpress设置中更改时区的游戏。它目前设置为UTC-5,所以我认为把它改成芝加哥的样子会有所帮助,但它也没有。

在下面的行中添加X-WR-TIMEZONE:America/New_York

$data="BEGIN:VCALENDAR''r''nVERSION:2.0''r''nMETHOD:PUBLISH''r''nX WR时区:美国/纽约''r''n

更新:我已经更新了整行代码,它使用了DTSTART;VALUE=DATE:,没有使用ZDTEND 也是如此

$data = "BEGIN:VCALENDAR'r'nVERSION:2.0'r'nMETHOD:PUBLISH'r'nX-WR-TIMEZONE:America/New_York'r'nBEGIN:VEVENT'r'nDTSTART;VALUE=DATE:".date("Ymd'THis",$start)."'r'nDTEND;VALUE=DATE:".date("Ymd'THis",$end)."'r'nLOCATION:".$location."'r'nTRANSP: OPAQUE'r'nSEQUENCE:0'r'nUID:".$uid."'r'nDTSTAMP:".date("Ymd'THis'Z")."'r'nSUMMARY:".$name."'r'nDESCRIPTION:".$description."'r'nPRIORITY:1'r'nCLASS:PUBLIC'r'nEND:VEVENT'r'nEND:VCALENDAR";