2014-11-13 4 views
0

У меня есть функция JavaScript, работающая в папке Google Диска многих электронных таблиц, которые в настоящее время регистрируют даты в журнале;Преобразование даты в отметку времени UNIX

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); 
} 

Как бы один преобразовать вывод 'ячейки', которая в настоящее время выглядит как:

May 03, 2014 at 05:19PM 

В штампе Unix времени в JavaScript? Я склонен полагать, что это может включать функцию Date(), но я не уверен.

Thank's in Advance.

+0

Если ячейка содержит значение, которое распознает листы в качестве даты, тогда 'getValue()' даст вам объект js Date, независимо от того, как дата _форматирована в листе. У вас есть проблемы? – Mogsdad

ответ

0

Вы можете сделать так, чтобы удалить «на», а лист затем распознает значение как действительную дату.

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

Вы должны удалить "at" и добавить пробел после "05:19".

выглядеть следующим образом:

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

Если вы хотите, чтобы получить строковое представление числа секунд с начала эпохи UNIX (1 января 1970), вы можете использовать такой код:

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. 
} 
Смежные вопросы