2016-10-12 2 views
1

Я пытаюсь использовать API календаря, чтобы вытащить некоторые события на основе вывода datepicker. Проблема, с которой я сталкиваюсь с моим AppScript, правильно форматирует значение, которое я получаю от datepicker, который будет служить в качестве входа для функции getEventsForDay().Проблемы с форматированием getEventsForDay() с возвращаемым значением datepicker

function testing(){ 
var z = CalendarApp.getCalendarsByName("X")[0]; 
var date = new Date('2016-10-12'); 
var dateformatted =Utilities.formatDate(date), "GMT", "yyyy-MM-dd hh:mm:ss a"); 
var a = z.getEventsForDay(dateformatted, {search: 'OOO'}); 

Результат работы в этом сценарии - пустой объект, ожидаемый, поскольку это форматирование вообще не работает. (я прочитал 1000 сообщений, которые должны работать).

Для контекста также у меня есть один рабочий пример с сегодняшней датой, с которой он отлично работает, потому что ввод представляет собой новую Date(). Здесь вы найдете:

var datetoday = new Date(); 
var b = z.getEventsForDay(datetoday, {search: 'OOO'}); 

Любые идеи о том, что я здесь отсутствует?

Заранее спасибо.

ответ

0

С new Date() возвращает объект Date в формате UTC, а не местный часовой пояс, вы можете запрашивать не тот день и, следовательно, пустой объект, если на другой день нет событий.

Вы можете тайную дату для текущего часового пояса, как

date.setTime(date.getTime() + date.getTimezoneOffset()*60*1000) 

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

Надеется, что это помогает

+0

Решите как шарм! Благодаря! – Rafa

+0

На самом деле есть проблема с этим решением: он работает только для сегодняшней даты. Если вы установите дату на будущее, она будет продолжать возвращать сегодняшнюю дату. По крайней мере, из теста, который я сделал до сих пор. – Rafa

+0

Теперь я понимаю, что если я добавлю запись в новую дату ('1 июля 1999 года), она будет работать. Но в целом проблема заключается в том, как преобразовать в этот формат из моего выбора даты, который выводит результаты как «ГГГГ-ММ-ДД», – Rafa

0

внесены некоторые изменений и теперь это работает на App Script:

var t = "2016-10-01"; 
var q = t.replace(/-/g,"/"); 
var a = new Date(q); 
a.setTime(a.getTime() + a.getTimezoneOffset()*60*1000) 
var w = z.getEventsForDay(a, {search: 'OOO'}); 
Logger.log(a); 
Logger.log(w);