Google лист / javascript не оценивает даты, как ожидалось - PullRequest
1 голос
/ 16 января 2020

У меня есть сценарий PHP, который записывает метку времени в Google Sheet. Когда я попытался определить, находится ли эта временная метка между двумя другими временными метками, которые я ввел вручную в тот же лист, я обнаружил странное поведение. Я подумал, что это может быть из-за того, что Google добавил 'в начале строки в ячейке, поэтому я попытался выполнить подстроку для удаления апострофа.

function weirdDate(dateFromPhp) {
  var dateSubStr = new Date(dateFromPhp.substr(1));
  var dateDefault = new Date(dateFromPhp);
  return "dateFromPhp: " + dateFromPhp + " dateSubStr: " + dateSubStr + " dateDefault: " + dateDefault;
}

Выходные данные: dateFrom Php: 16/01/2020 08:33:45 dateSubStr: Mon Jun 01 2020 08:33:45 GMT + 1000 (AEST) dateDefault: четверг, 01 апреля 2021 08:33:45 GMT + 1100 (AEDT)

Я не знаю, почему эти даты находятся на месяцы или годы от ожидаемых и с разными часовыми поясами. Операция без подстроки привела к правильному часовому поясу для меня.

Есть идеи, как превратить эту строку в метку времени с правильной датой?

1 Ответ

1 голос
/ 16 января 2020

Я обнаружил ответ. Я понятия не имел javascript ожидаемый мм / дд / гггг в качестве порядка для формата даты.

function weirdDate(dateFromPhp) {
  var dateSubStr = new Date(dateFromPhp.substr(1));
  var dateDefault = new Date(dateFromPhp);
  var dateUs = americanizeDate(dateFromPhp);
    return "dateFromPhp: " + dateFromPhp + " dateSubStr: " + dateSubStr + " dateDefault: " + dateDefault + " dateUS: " + dateUs; 
}

function americanizeDate(ausDate) {
  var dateParts = ausDate.split("/");
  // month is 0-based, that's why we need dataParts[1] - 1
  var usDate = new Date(dateParts[1]+"/"+dateParts[0]+"/"+ dateParts[2]); 
  return usDate;
}

Переключение месяца и дня решило проблему.

...