【问题标题】:google app scripting Cannot find function getFullYear in object谷歌应用脚​​本在对象中找不到函数 getFullYear
【发布时间】:2017-04-05 01:03:48
【问题描述】:

我的代码中有这一行:

var now= Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "EEE MMM d yyyy HH:mm:ss");

但是当我尝试从现在开始获取年份时出现错误。

var yearnow= now.getFullYear();

错误是:“TypeError: Cannot find function getFullYear in object Wed Apr 5 2017 09:56:26”

有没有办法解决这个问题?

提前谢谢你!!

【问题讨论】:

    标签: google-apps-script spreadsheet google-sheets-api


    【解决方案1】:

    Utilities.formatDate 返回一个字符串。它不会返回像 javascript 的 new Date() 这样的日期对象,因此您会收到该错误。

    你可以做这样的事情来获取你的年份并将你的格式保留在 now 字符串中

    var now= Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "EEE MMM d yyyy HH:mm:ss");
    var dt = new Date(now)  // This not the same as new Date()
    var year = dt.getFullYear()
    

    希望有帮助!

    编辑

    使用以下函数:

    function getDate(){
     var now= Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "EEE MMM d yyyy HH:mm:ss");
     var dt = new Date(now)
     Logger.log(now)
     Logger.log(dt.getFullYear())
     Logger.log(dt.getDate())
     Logger.log(dt.getMonth() + 1) //add 1 to compensate for the month index starting at 0, i.e Jan = 0, Feb =1, March = 2.... Dec = 11
    }
    

    我得到了这个日志

    [17-04-04 20:35:03:355 CDT] Tue Apr 4 2017 20:35:03
    [17-04-04 20:35:03:355 CDT] 2017.0
    [17-04-04 20:35:03:356 CDT] 4.0
    [17-04-04 20:35:03:356 CDT] 4.0
    

    如您所见,它保留了代码第一行中设置的 now 字符串中的日期、年份和月份。

    【讨论】:

    • 谢谢!!但在这种情况下,我不能保持我的时区。它采用默认时区。如何获取我所在时区的日、月和年?
    • 我有点迷路了!新的日期对象是使用 var now 创建的,因此它现在将保留字符串的日、月和年。不知道它如何默认为默认时区!
    • 没错!!十分感谢。我使用了 getDay() 函数,这就是我无法找到正确日期的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多