将日期转换为UNIX时间戳

时间:2014-11-13 14:56:19

标签: javascript google-apps-script google-sheets

我在许多电子表格的Google云端硬盘文件夹中运行了一个JavaScript函数,目前正在将日期记录到日志中;

function convertDates(){
    var ui = SpreadsheetApp.getUi();
    SpreadsheetApp.getActiveSpreadsheet().toast('Conversion Started With First Row Date Cells','Conversion', 5);
    Logger.log('Date Conversion Started');
    var activeCell = SpreadsheetApp.getActiveSpreadsheet().getActiveCell();
    var cell = activeCell.getValue();
    Logger.log(cell);
 }

如何转换目前看起来像'cell'的输出:

 May 03, 2014 at 05:19PM

进入Javascript中的Unix时间戳?我倾向于认为这可能涉及Date()函数,但我不确定。

提前感谢。

3 个答案:

答案 0 :(得分:0)

您可以通过这种方式删除“at”,然后工作表会将该值识别为有效日期。

function convertDates(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var range_input = sheet.getRange(1, 1);

  range_input = range_input.getValue();
  range_input = range_input.replace("at ", " ");
  sheet.getRange(1, 1).setValue(range_input);
}

我只是替换一个单细胞。您可以将其循环到所有需要的单元格值。

希望有所帮助!

答案 1 :(得分:0)

如果你想获得自UNIX纪元(1970年1月1日)以来秒数的字符串表示,你可以使用这样的代码:

function convertDates(){
  var ui = SpreadsheetApp.getUi();
  SpreadsheetApp.getActiveSpreadsheet().toast('Conversion Started With First Row Date Cells','Conversion', 5);
  Logger.log('Date Conversion Started');
  var activeCell = SpreadsheetApp.getActiveSpreadsheet().getActiveCell();
  var unixEpoch = new Date(1970,0,1,0,0,0).getTime();// difference between JS epoch and UNIX epoch in milliseconds
  var cell = ((activeCell.getValue().getTime()-unixEpoch)/1000).toString();
  Logger.log(cell);
  activeCell.setValue(cell);// this will write it back to the sheet... be careful, it is not a date object anymore but a string... so the code won't work after that.
 }

答案 2 :(得分:-1)

你必须删除" at"并在" 05:19"之后添加一个空格。

看起来像这样:

var date = new Date("May 03, 2014 05:19 PM");