使用PHP解析Google日历XML – 结束日期已过了一天
我正在尝试创建一个网页,并在主页上显示Google日历上的下三个活动.我一直在使用这个
PHP(http://james.cridland.net/code/google-calendar.html)来访问我的XML feed并将其格式化为HTML.
我遇到的问题是由于某种原因,新的一天从上午11点开始.例如,如果我的Google日历从12月20日上午10点开始,持续一个小时,我的PHP输出将显示一个事件,该事件从20日上午10点开始,到21日上午11点结束.否则它工作正常. 我已经在我的Google日历帐户上设置了本地(新西兰)时间,并使用date_default_timezone_set(“Pacific / Auckland”)在PHP中设置了时间. 计算结束日期的可怕线是 $gCalDateEnd = date($dateformat,strtotime($ns_gd->when->attributes()->endTime)+date("Z",strtotime($ns_gd->when->attributes()->endTime))); 其中$dateformat是一个具有日期格式的字符串. Google Calendar XML提供了开始和结束时间 2011-12-22T10:00:00.000+13:00 2011-12-23T11:00:00.000+13:00 PHP计算时间表为2011年12月22日上午10点至2011年12月23日下午2点. 这是怎么回事?!?! 解决方法
这条线确实太可怕了:
$gCalDateEnd = date($dateformat,strtotime($ns_gd->when->attributes()->endTime)+ date("Z",strtotime($ns_gd->when->attributes()->endTime)));
因此,在您的示例中,您的日期会增加13个小时. 10:00 13:00 = 23:00(晚上11点)仍然在同一天,但是11:00 13:00 = 24:00(12点),实际上是新的一天00:00. 所以转换日期的正确方法是: $gCalDateEnd = date($dateformat,strtotime($ns_gd->when->attributes()->endTime)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |