【问题标题】:Google Apps Script formatDate using user's time zone instead of GMTGoogle Apps 脚本 formatDate 使用用户的时区而不是 GMT
【发布时间】:2013-09-06 23:06:06
【问题描述】:

我有一行在单元格中设置当前日期和时间:

sheet.getRange(1,1).setValue(new Date());

然后我有一行可以根据该单元格的值创建格式化日期:

var addedDate = sheet.getRange(1,1).getValue();
var addedTime = Utilities.formatDate(addedDate, "GMT", "hh:mm a");

生成的 addedTime 似乎在 GMT 时区,我需要它在用户的时区。它通常是美国东部时间 (-0500),但如果我只是从时间中减去 5 小时,那么这并没有考虑夏令时 (-0400)。

我在这里查看了 formatDate 的文档:https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String)

此处链接到官方 Java SimpleDateFormat 类文档:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

...但我找不到有效时区列表来替换 GMT。

【问题讨论】:

    标签: javascript time google-apps-script timezone timezone-offset


    【解决方案1】:

    您可以像这样直接获取电子表格时区:

      var addedDate = sheet.getRange(1,1).getValue();
      var addedTime = Utilities.formatDate(addedDate, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "hh:mm a");
    

    doc here

    但如果您想自己选择,Google Apps 脚本会使用这些格式:

    http://joda-time.sourceforge.net/timezones.html

    【讨论】:

    • 更新:Session.getScriptTimeZone() 也可以满足我的需求。 developers.google.com/apps-script/reference/base/session
    • @mike:使用Session.getScriptTimeZone() 的一个潜在问题是跨时区部署脚本。您在不同 tz 中的最终用户最终会将时间戳同步到脚本的 tz 而不是电子表格的 tz。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多