Почему разные даты сохраняются в разные переменные - PullRequest
0 голосов
/ 12 июня 2019

Я храню значения даты в двух переменных, одна из которых представляет собой одно значение, а другая - массив. Первая - это строка, а другая - массив, взятый из листа Google. Суть в том, что при сохранении в переменную одно сохраняется как [вт 31 июля 00:00:00 GMT + 01: 00 2018], а другое сохраняется как [вт 31 июля 06:00:00 GMT + 01: 00 2018 ] поэтому, когда я пытаюсь найти первую совпадающую дату в массиве, который содержит второй пример, совпадение не найдено.

 var cur_date = new Date('7/31/2018') 
 var date_array = 
 sales_sheet.getRange(index,9,last_row_current,1).getValues();  

Мне кажется, что самый простой способ исправить это - заставить значение в cur_date иметь 0600, но я не могу понять, как это сделать. Буду очень признателен за любую помощь в подборе этих значений.

cur_date = [вторник, 31 июля, 00:00:00 GMT + 01: 00 2018] date_array = [вторник, 31 июля, 06:00:00 по Гринвичу + 01: 00 2018] (имеет много значений, но первое - это то, которое я ожидал бы найти)

Первое значение в листе Google: 7/3/12018 ..

1 Ответ

0 голосов
/ 12 июня 2019

Выпуск:

Конструктор даты не возвращает дату / время, только дату.


Решение:

Правильно отформатируйте дату для сравнения, передав new Date() для метода Utilities.formatDate().


Пример:

Вы передаете только следующее:

var cur_date = new Date('7/31/2018');
Logger.log(cur_date);
//returns 'Tue Jul 31 00:00:00 GMT+01:00 2018'

Чтобы получить то, что вы ожидаете, вынужно также передать время:

var cur_date = new Date('7/31/2018 06:00:00');
Logger.log(cur_date);
//returns 'Tue Jul 31 06:00:00 GMT+01:00 2018'

Это ожидаемое поведение, конструктор даты не может печатать время, если вы не передаете его ему.

Таким образом, для сравнения дат вы можете использовать конструктор даты в Utilities.formatDate(), чтобы ваш сценарий мог успешно сравнить их (с датой, которую вы построили, а не с текущей датой / временем по умолчанию), имейте в виду, что вынужно передать время на new Date(), если вы хотите, чтобы это тоже сравнивалось.

var cur_date = Utilities.formatDate(new Date(),'GMT+1','M/dd/yyyy hh:mm:ss');

Ссылки:

  1. new Date()для конструктора даты.
  2. Utilities.formatDate() для форматирования дат в скрипте Google Apps.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...