0

是我自己还是谷歌最近发生了变化?我有一个功能可以为编辑添加时间戳,它工作得很好,就在前几天它坏了。

从某种意义上说,它曾经在我的时区标记时间——正如我使用的函数格式所指定的那样,它现在似乎是在 GMT 而不是 GMT-8 中标记时间戳。我的脚本没有任何变化,所以发生了什么?

function happyFunTime() {
  var s = SpreadsheetApp.getActiveSheet();
  var r = s.getActiveCell();
  var columnNum = r.getColumn();
  var timeLastCalledColumnOffset = getTimeLastCalledColumnOffset();
  var rowNum = r.getRow();

if (rowNum <=1) return;

  timeLastCalledColumnOffset++;
  // set dateCell = the current row at column J
  var dateCell = s.getRange(rowNum, timeLastCalledColumnOffset);


  var tZone= "GMT-8";
  // Format the current date into datetime format 
  var dateTime = Utilities.formatDate(new Date(), tZone, "MMM-dd-yyyy h:mm a");

  // Set the cell value.  Add apostrophe to force text treatment & keep the spreadsheet from reformatting
    dateCell.setValue("'" + dateTime);

}

getTimeLastCalledColumnOffset()是一个自定义函数,用于返回包含我感兴趣的值的列的编号(J,在这种情况下为 9)。

4

3 回答 3

3

是的,昨天有一个问题,因为这个字符串“GMT-2”或“GMT-0200”一直工作正常,现在出现故障。

您可以更改此行:

   var tZone= "GMT-8"

对这个

   var tZone= "GMT-08:00"

或者您可以使用以下代码行获取时区:

  var FUS1 = new Date().toString().substr(25,8);  // I use FUS1 instead of tZone

  // GMT-0800  ->  GMT-08:00 , ...
  var FUS1 = FUS1.substr(0,6) + ':' + FUS1.substr(6)

  // Format the current date into datetime format 
  var dateTime = Utilities.formatDate(new Date(), FUS1 , "MMM-dd-yyyy h:mm a");

或者你可以从这里写下你的时区:

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

“美国/道森” -> -08:00(我不知道你住在哪里 :-( )

这个代码:

  var dateTime = Utilities.formatDate(new Date(), "America/Dawson" , "MMM-dd-yyyy h:mm a");

注意:如果您想格式化从 DateBox(标签、文本框、...)捕获的日期,那么最后一行可以类似于:

   var dateTime = Utilities.formatDate(new Date(e.paramameter.datebox), "America/Dawson" , "MMM-dd-yyyy h:mm 

塞尔吉

于 2012-12-15T22:12:40.583 回答
1

另一个获得正确字符串的简单解决方案Utilities.formatDate()是使用 Session.getTimeZone()which'Europe/Paris'在我的情况下返回并且是一个有效的参数。

于 2012-12-17T10:56:00.533 回答
0

我们可以使用下面的行直接更改电子表格的时区

SpreadsheetApp.getActive().setSpreadsheetTimeZone(Session.getScriptTimeZone())

于 2018-01-30T05:42:42.893 回答