【问题标题】:Google script formatDate issue using getScriptTimeZone使用 getScriptTimeZone 的 Google 脚本 formatDate 问题
【发布时间】:2015-08-21 11:56:30
【问题描述】:

我在使用 Google 脚本的 web 应用程序中使用 JDBC 数据。它从数据库中提取数据,然后在 html 中显示。我认为使用 Utilities.formatDate 将 jdbc 结果日期转换为格式化字符串会起作用。

在我的 Code.gs 文件中,我正在使用:

var e_result = SQLstatement.executeQuery("select * from events...");
var resultsArray = [];
while(e_result.next()) {
  resultsArray.push({'start_dte': Utilities.formatDate(new Date(e_result.getString('start_dte')), Session.getScriptTimeZone(), "MMM dd")}); 
  // test formatDate
  Logger.log("pre format date="+e_result.getString('start_dte'));
  Logger.log("post format date="+Utilities.formatDate(new Date(e_result.getString('start_dte')), Session.getScriptTimeZone(), "MMM dd"));
}

这会输出到 Logger:

[15-08-21 04:32:50:580 PDT] pre format date=2015-07-23 00:00:00.0
[15-08-21 04:32:50:581 PDT] post format date=Dec 31

预格式化日期是在数据库中找到的正确日期。但是 formatDate 代码没有给出相同的日期字符串。

我使用了“GMT-08:00”,结果与上面的“发布格式日期”完全相同(认为这是一个时区问题)。我错过了什么??

【问题讨论】:

    标签: jdbc google-apps-script formatdatetime


    【解决方案1】:

    之所以将发布格式日期返回为 12 月 31 日,是因为如果将错误日期或格式错误的日期传递给 Date() 函数,它会返回 Wed Dec 31 1969 00:00:00 的值。您的“start_dte”值需要采用特定格式才能传递给 Date() 函数,以便可以正确解析它,从而以您想要的格式放置。下面是一个小示例,可以更清楚地说明这一点:

    function testDate(){
    
      var start = "Aug 7 2015 00:00:00 GMT+0100";
      var testDate = Utilities.formatDate(new Date(start), "GMT-08:00", "MMM-dd-yyyy");
    
      Logger.log(testDate);
    }
    

    输出:

    [15-08-21 12:46:20:285 PDT] Aug-06-2015
    

    start 也可以只是 Aug 7 2015 00:00:00,它会起作用。但是,只要传递了 Date() 函数不期望的格式的值,它就会返回 Dec 31 1969 的值。

    【讨论】:

    • 感谢 pointNclick。所以我的 2015-07-23 00:00:00.0 的数据库结果需要格式化为 MM dd yyyy 以便 date() 理解它?我将查看 Utilities.formatDate(String...) 作为获取 date() 正确格式的一种方法。
    • 我发现在 SQL 中进行转换最容易。例如,“选择 DATE_FORMAT(events.start_dte, '%Y-%m-%d') 作为 start_dte...”。然后结果是一个字符串 e_result.getString('start_dte'),它不需要 formatDate 或 Date。谢谢点Nclick。
    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多