- Вы хотите проанализировать строковое значение
yyyy-mm-dd hh:MM:ss timezone
как объект даты.
Если мое понимание верно, как насчет этого ответа?Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.
Когда я увидел формат, я подумал, что RFC3339 близко к формату.Так как насчет следующего потока?
- Разделить значение на
, что является пробелом. - Соединить 1-й и 2-й элемент разделенного значения на "T".
- Добавление последнего элемента к объединенному значению.
Когда для этого потока используется 2018-09-21 16:00:00 -0500
, значение преобразуется в 2018-09-21T16:00:00-0500
.Это можно использовать как тип RFC3339.С помощью этого потока yyyy-mm-dd hh:MM:ss timezone
может быть проанализирован как объект даты.
Пример сценария:
Шаблон 1:
Пример сценария, который отражен над потоком, выглядит следующим образом.
var str = "2018-09-21 16:00:00 -0500"; // yyyy-mm-dd hh:MM:ss timezone
var ar = str.split(" "); // Added
var str = ar.slice(0, 2).join("T") + ar[2]; // Added: Here str is "2018-09-21T16:00:00-0500".
var d = new Date(str);
var days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
var day = days[d.getDay()];
var hh = d.getHours();
var mm = d.getMinutes()
if(hh < 10) {hh = "0"+hh}
if(mm < 10) {mm = "0"+mm}
Logger.log(day+" "+hh+mm) // Added
return day+" "+hh+mm
Шаблон 2:
Как еще один шаблон, как насчет этого сценария?В Google Apps Script вы также можете использовать Utilities.formatDate()
.
var str = "2018-09-21 16:00:00 -0500";
var ar = str.split(" ");
var r = ar.slice(0, 2).join("T") + ar[2];
var d = new Date(r);
var res = Utilities.formatDate(d, Session.getScriptTimeZone(), "E hhmm").toUpperCase();
Logger.log(res)
Примечание:
- Если формат отличается от
yyyy-mm-dd hh:MM:ss timezone
, возможно, этот скрипт не сможетиспользоваться.Пожалуйста, будьте осторожны с этим.
Ссылка:
Если я неправильно понимаю ваш вопрос, извините.