我们使用Google Calendar API向员工的日历添加活动(约会),并将客户添加为受邀者。
我们遇到了一个问题,就像谷歌发送事件邀请的方式一样,将其中的一些发送到UTC(对于gmail和非gmail地址)。
以下是实际示例的JSON(个人信息编辑):
{
"start": {
"dateTime": "2017-10-29T13:00:00-04:00",
"timeZone": "America/New_York"
},
"end": {
"dateTime": "2017-10-29T14:00:00-04:00",
"timeZone": "America/New_York"
},
"attendees": [{
"email": "[redacted]@gmail.com"
}, {
"email": "[redacted]@popsells.com"
}],
"creator": {
"email": "[redacted]@popsells.com"
},
"description": "Location:[redacted]",
"guestsCanInviteOthers": true,
"guestsCanModify": false,
"guestsCanSeeOtherGuests": false,
"id": "pop1026201[redacted]",
"kind": "calendar#event",
"location": "[redacted]",
"transparency": "opaque",
"visibility": "default",
"summary": "Photos & Video: 2014 Bayliner 16",
"organizer": {
"email": "[redacted]@popsells.com"
},
"reminders": {
"overrides": [{
"method": "email",
"minutes": 120
}],
"useDefault": false
}
}
请注意决定在时间后面指定-0400偏移量以及第二个字段,以便让Google明确知道我们希望此事件表示的时区。
在此示例中,客户收到了此信息:
直接从我们的SMTP服务器获取的实际原始.eml文件(我们在服务器上实时收到从Gmail发送的所有内容的副本)显示了一些有趣的内容(两个屏幕截图):
这只是一个显示问题;实际的日历活动将在合适的时间在员工和客户日历上。这个显示问题让我们的客户感到困惑:
a。)在他们的日历上看到此事件之前看到此邀请电子邮件,以便他们看到主题行中引用的错误时间(没有指定时区)。
b。)他们不是军人或天才程序员(像我们一样),因此他们假设没有时区的时间将是他们与当地企业一起参加的活动的当地时间。c。)请勿阅读整个邀请电子邮件,以查看精美图片显示的时区与他们预期的时区不同。
d。)大多数人甚至不知道“协调世界时”在一段时间后的意思是什么,甚至可能不认为是时区。
我已经确认我按照JSON中的建议发送了所有内容。
我已确认组织者的日历(在JSON中指定)在America / New_York上。从命中到日历的JSON响应刚刚返回:
{
"kind": "calendar#calendar",
"etag": "\"BKjXnZpXR6E5ueFWG3O[redacted]\"",
"id": "[redacted]@popsells.com",
"summary": "[redacted]@popsells.com",
"timeZone": "America/New_York"
}
我确定它使用正确指定的时区发送的时间不是随机的,但我没有信息可以解释为什么Google有时会正确发送,而其他时间却没有。
我无法访问客户的日历,但我没有理由相信我们的许多客户都将其时区设置为UTC。我们所有的客户都在美国。假设30%以上的客户将他们的时区设置为UTC,这在统计上是不合理的。
有没有人对我接下来要尝试的内容有任何建议,以确定指定时区的时间,在此具体示例中,将是下午1点至下午2点(而不是仅显示下午5点至下午6点) )?
此问题就此结束了。