我正在尝试将Google日历集成到我的某个应用中。
我一直在关注一个有用的教程,但一直坚持告诉Google正确的时间。
当我添加约会时,我使用此时间戳格式。
日期时间时区 2013-04-02T18:00:00.000 + 00:00
现在这似乎有效,我可以看到它为当前的夏令时增加了一个小时。我如何过来或使用PHP为我生成正确的日期格式。
我可以阅读的指南的任何帮助或链接都会很棒,我所能找到的只是关于重复发生日期时间问题的人。
这是我添加和约会的json代码,
$date = '2013-04-02';
$starttime = '18:00';
$endtime = '20:00';
{
"start": {
"dateTime": "{$date}T{$starttime}:00.000+00:00"
},
"end": {
"dateTime": "{$date}T{$endtime}:00.000+00:00"
},
"summary": "$title",
"description": "$title"
}
答案 0 :(得分:1)
时间戳的+00:00
部分是您的时区的GMT偏移量,此处,它设置为“加零”或在人类中,“我的时区是GMT”。如果您距离GMT一小时,则需要将此部分更改为+01:00
或-01:00
,具体取决于您是分别提前一小时还是一小时后。如果您愿意,也可以获得UTC Offset in PHP。
或者,您可以将所有内容转换为GMT日期/时间,但这项工作要多得多,并且内置时区支持,使用它会更容易。
答案 1 :(得分:0)
我希望有人会发现我的解决方案很有用。在我们切换到/来自GMT时,我在使用Google Calendar API插入事件时遇到了问题。
我使用的是DateTime及其常量RFC3339。 RFC3339格式包括时间偏移(如+01:00)。这可能会导致Google Calendar API出现问题,因为一旦指定了dateTime属性,Calendar就会完全忽略timeZone属性中的值。
对我来说,只有解决方案是停止使用带有时间偏移的RFC3339格式。现在我使用以下(RFC3339之类)DateTime格式:Y-m-d\TH:i:s
(注意最后缺少的P属性,RFC3339:Y-m-d\TH:i:sP
)。
然后你必须指定timeZone属性。例如' Europe / Prague'。
最后我的代码如下:
$atts['summary'] = $this->title;
$atts['location'] = $this->location;
$atts['description'] = $this->description;
$atts['start']['dateTime'] = $this->start->format("Y-m-d\TH:i:s");
$atts['start']['timeZone'] = $this->timeZone; //"Europe/Prague"
$atts['end']['dateTime'] = $this->end->format("Y-m-d\TH:i:s");
$atts['end']['timeZone'] = $this->timeZone; //"Europe/Prague"