I-Cal如何计算时间?

问题描述:

我抽空在UTC,然后conveting的时间到特定的时区的时间将它发送的压延邀请,I-Cal如何计算时间?

考虑一个日期的功能,例如,

$date = new DateTime('2012-07-17 09:00:00 +00'); //UTC 
$date->setTimezone(new DateTimeZone('America/Chicago')); 

echo $start_time=$date->format('H:i:s'); // echoes 04:00:00; // 

但经过在Outlook同时如,

$ical .= "DTSTART:".$start."T".$start_time."\r\n"; 

没有给出时间是上午9点在美国,而不是压延机时间设置为其他时间(上午9:30)。 我能做些什么来解决这个问题?

任何帮助,非常感谢。

+0

在我的iCal文件I格式DTSTART这样的:'DTSTART; TZID =欧洲/柏林:20170922T200000'没有问题,到目前为止它。在这里你可以找到一个文档http://www.kanzaki.com/docs/ical/dateTime.html –

看一些例子here,它看起来像它使用的格式Ymd牛逼Hisž,与TZ是文字。

所以,你想传递的东西,如:

$ical .= "DTSTART:".$date->format('Ymd\THis\Z')."\r\n"; 
+0

不会这也触发同样的方式..如果你看到亚洲/加尔各答; UTC为9:00:00为090000,IST为143000返回,但当我将1430000传递给ical时,它将邀请显示为8PM而不是9AM。不知道我在这里失踪了什么 – apoo

+0

您应该传递UTC事件的时间。您将IST传递给UTC,这会使错误加倍(您最终提前11小时,这是5.5小时偏移的两倍) –

+0

谢谢。你是对的。也是在Windows内部,Outlook的计算已经发生..所以偏移量必须减去。 – apoo