Php 谷歌日历时区不正确

Php 谷歌日历时区不正确,php,google-api,google-calendar-api,Php,Google Api,Google Calendar Api,我将下面的数组发送到谷歌api,用于将事件保存到谷歌日历中,但它显示的时间不正确。 有人能帮我吗 Array ( [summary] => XXXXXXXXXXXXXXXXXXXX [location] => XXXXXXXXXXXXXXXXXXX [description] => XXXXXXXXXXXXXXXX [start] => Array ( [dateTime] => 2017-01-25T09:00:00+0000

我将下面的数组发送到谷歌api,用于将事件保存到谷歌日历中,但它显示的时间不正确。 有人能帮我吗

Array
(
[summary] => XXXXXXXXXXXXXXXXXXXX
[location] => XXXXXXXXXXXXXXXXXXX
[description] => XXXXXXXXXXXXXXXX
[start] => Array
    (
        [dateTime] => 2017-01-25T09:00:00+0000
        [timeZone] => America/Toronto
    )

[end] => Array
    (
        [dateTime] => 2017-01-25T09:30:00+0000
        [timeZone] => America/Toronto
    )

[attendees] => Array
    (
        [0] => Array
            (
                [email] => XXXXXXXXXXXXXXXXXXXXXXXXXXXX
            )

        [1] => Array
            (
                [email] => XXXXXXXXXXXXXXXXXXXXXXXXXXXX
            )

    )

[reminders] => Array
    (
        [useDefault] => 
        [overrides] => Array
            (
                [0] => Array
                    (
                        [method] => email
                        [minutes] => 1440
                    )

                [1] => Array
                    (
                        [method] => popup
                        [minutes] => 10
                    )

            )

    )
我正在发送9:00-9:30的时间来保存一个事件,但它在我的谷歌日历中显示为2017年1月25日4:00-4:30。我正在使用PHP谷歌日历api。
谢谢

我想你只能把
2017-01-25T09:00:00
放在没有
+0000
的地方。您将使用该属性正确指定时区

你可以在这本书里核对我的答案


我已经使用API explorer对其进行了测试,它工作正常。

我想您只能在没有
+0000
的情况下放置
2017-01-25T09:00:00
。您将使用该属性正确指定时区

你可以在这本书里核对我的答案


我已经使用API explorer对它进行了测试,它工作正常。

dateTime字段指定事件发生的时间点,时区只是在其时区中向用户显示该事件的装饰(除非省略了偏移,否则将考虑时区的偏移)。dateTime字段中的偏移量对时间评估很重要(在您的情况下,您指定了+0000,这意味着“与UTC无偏移”)

您有三种选择:

  • 以UTC 2017-01-25T14:00:00+0000(或更好的2017-01-25T14:00:00Z)为单位指定时间

  • 使用多伦多偏移指定时间 2017-01-25T09:00:00-0500

  • 完全省略偏移2017-01-25T09:00:00


日期时间字段指定事件发生的时间点,时区只是向其时区中的用户显示该事件的装饰(除非省略了偏移,否则将考虑时区偏移)。dateTime字段中的偏移量对时间评估很重要(在您的情况下,您指定了+0000,这意味着“与UTC无偏移”)

您有三种选择:

  • 以UTC 2017-01-25T14:00:00+0000(或更好的2017-01-25T14:00:00Z)为单位指定时间

  • 使用多伦多偏移指定时间 2017-01-25T09:00:00-0500

  • 完全省略偏移2017-01-25T09:00:00


“+0000”指定了时区。如果你把它改成“-0500”,多伦多的时区会发生什么。或者把这些放在一起,使用“时区”声明(哪一个更好,因为这样可以节省夏季时间)?谢谢你的回复@Robbie,是的,它非常适合静态日期。我有类似这样的东西:“$Start=newdatetime(date('Y-m-dh:I:s',strottime($date));'Start'=>array('DateTime'=>$Start->format(DateTime::ISO8601),'timeZone'=>America/Toronto',”,`你能帮我用这种格式制作-'05:00'吗?谢谢如果我从发送日期中扣除5小时,它会起作用,但我认为这不是正确的方法。从发送日期中扣除5小时可能只对我的位置有效。有没有办法使其动态化并根据我的位置设置时间?0500是时区。哟你不需要从时间中扣除它。
2017-01-25T09:30:00-0500
表示多伦多的上午9:30,
2017-01-25T09:30:00=1000
表示悉尼的上午9:30。“+0000”指定了时区。如果将其更改为“-0500”,即多伦多的时区,会发生什么情况。或者将其全部删除并使用“时区”语句(哪一个更好,因为这样可以节省夏季时间)?谢谢你的回复@Robbie,是的,它非常适合静态日期。我有这样的东西:“$Start=new DateTime”(date('Y-m-d H:I:s',strottime($date));'Start'=>array('DateTime'=>$Start->format(DateTime::ISO8601),“时区”=>“美国/多伦多”,),`你能帮我用这种格式制作-'05:00'吗?谢谢如果我从发送日期中扣除5小时,它会起作用,但我认为这不是正确的方法。从发送日期中扣除5小时可能只对我的位置有效。有没有办法使其动态化并根据我的位置设置时间?0500是时区。哟你不需要从时间中扣除。
2017-01-25T09:30:00-0500
在多伦多是指上午9:30,
2017-01-25T09:30:00=1000
在悉尼是指上午9:30。
{
 "end": {
    "dateTime": "2017-01-25T09:30:00",
    "timeZone": "America/Toronto"
 },
 "start": {
    "dateTime": "2017-01-25T09:00:00",
    "timeZone": "America/Toronto"
 }
}