CloudKit Dashboard日期字段时区疑问:输入日期应使用哪个时区?
CloudKit Dashboard日期输入的时区逻辑解答
好问题!我来帮你理清CloudKit Dashboard处理无时区日期输入的核心逻辑:
- CloudKit Dashboard始终使用你操作时的本地时区解析日期,不是固定绑定EDT或者其他时区。你在纽约(EDT)输入
2019-03-29 19:00:00时,Dashboard会自动把这个本地时间转换成对应的UTC时间存储到CloudKit服务器中。 - 你切换设备到伦敦时区后,代码里的
DateFormatter会读取CloudKit里的UTC时间,再根据设备当前的伦敦时区转换成当地时间显示,这就是为什么你能看到对应伦敦的时间——整个流程是完全符合时区转换逻辑的。
关于旅行时的输入问题:
旅行到其他时区时,直接按你当前所在时区的本地时间输入即可,不需要特意换算成原来的EDT。因为无论你用哪个时区输入,最终CloudKit存储的都是UTC标准时间,你的App代码会根据用户设备的当前时区自动转换显示,不会出现时间错乱的问题。
如果想验证这个逻辑,你可以在Dashboard输入日期后,查看记录的原始JSON数据(在CloudKit Dashboard的「Data」标签页里,点击记录详情就能看到),里面的日期字段会明确显示为UTC时间,这样就能确认转换是否正确啦。
内容的提问来源于stack exchange,提问作者davextreme




