【发布时间】:2017-03-05 20:20:12
【问题描述】:
我经常旅行,而且我经常有约会(例如航班)从一个时区开始,到另一个时区结束。我需要知道每个活动开始和结束的本地时间和 UTC 时间。
我使用 Google 日历并在日历事件中指定不同的开始和结束时区。
我编写了一个脚本,可以在给定时间段内提取我的议程,它显示了我当地时间的所有内容,这很好。
我很难获得当地时间。
当我检索事件时,时间显示为我的当地时间。
我可以检索欧洲/罗马等格式的时区,但这并不能帮助我显示当地时间。
附件是我日历中的一个条目的屏幕截图:
这是从我的脚本中看到的事件(取自日志文件):
Start: 2017-03-29T16:35:00+01:00, startTimeZone: Europe/Berlin.
End: 2017-03-29T22:30:00+01:00, endTimeZone: Asia/Qatar
这些时间应该分别是开始:17:35 和结束:00:30。
有人对如何获取当地时间或在时区之间转换有任何想法吗?
【问题讨论】:
-
显示几行脚本。脚本中的任何日期代码都使用脚本的时区作为默认时区。您的脚本有自己的时区,与日历时区不同。默认情况下,时区是相同的,除非您更改它们。您在哪里显示脚本中的时间?在对话框或边栏中?在电子表格中?
-
嗨桑迪,感谢您的回复。我不认为我问的问题很好。我的日期格式为
2017-03-30T01:01:00+01:00,时区为Asia/Qatar。我想在我的电子表格中将时间显示为03:01,这是约会发生时在卡塔尔的时间。从我的脚本返回的时间是我日历的当地时间,这很好。我需要将其调整为事件发生所在的时区。不同的夏令时开始和结束日期和规则会变得很困难,所以我真的想要一种方式来说明给定日期的Asia/Qatar是 GMT +/- X小时。 -
我会先让您查看
Utilities.formatDate()的文档,这可能会自动处理夏令时问题,因此您不需要自己编程。 Link to Apps Script documentation -
谢谢。这使用三个字母的时区,例如GMT、PST 等。或者它使用偏移量,例如+6。不幸的是,谷歌日历用户的时区格式为“亚洲/卡塔尔”(这将是“AST”或“+3”)。我需要从一个动态转换到另一个:(
-
您需要一份长文本格式的所有时区列表吗?我通过在浏览器开发工具中检查我认为的日历设置的 HTML 得到了一个列表。如果您认为它可能会有所帮助,我有这份清单。
标签: javascript datetime google-apps-script timezone google-calendar-api