новая дата () против Utilities.formatDate (новая дата ())

Может ли кто-нибудь сказать мне, почему этот код будет создавать две разные даты?

let now = new Date();  // today's date (1/2/2021)
Logger.log(now);       // Sat Jan 02 09:42:47 GMT-08:00 2021
Logger.log(new Date(now.getTime()-(2*1000*60*60*24)));   // Thu Dec 31 09:42:47 GMT-08:00 2020
Logger.log(Utilities.formatDate(new Date(now.getTime()-(2*1000*60*60*24)), "GMT-8", "MM/d/YYYY"));  // 12/31/2021

Почему Utilities.formateDate() изменил дату с 31.12.2020 на 31.12.2021?

******** РЕШЕНИЕ *********

Измените формат даты с "MM/d/YYYY" на "MM/d/yyyy".


person James VB    schedule 02.01.2021    source источник
comment
что такое Utilities? PS: ах, похоже, это специальный инструмент для сценариев приложений Google. Я добавил этот тег, чтобы уточнить.   -  person Christian Fritz    schedule 02.01.2021
comment
Это может помочь: stackoverflow.com/questions/28956532/   -  person Filipe    schedule 02.01.2021
comment
проверьте также ответ этот один.   -  person soMario    schedule 02.01.2021
comment
Да, Utilities.formatDate() — это скриптовый инструмент приложений Google. Хороший улов и спасибо за добавление тега.   -  person James VB    schedule 02.01.2021
comment
... также изменение формата с "MM/d/YYYY" на "MM/d/yyyy" решило проблему. Большое спасибо всем!   -  person James VB    schedule 02.01.2021


Ответы (1)


Это просто проблема с форматированием. Посмотрите здесь

Это: Logger.log(Utilities.formatDate(new Date(now.getTime()-(2*1000*60*60*24)), "GMT-8", "MM/d/YYYY"));

Должно быть так:

Logger.log(Utilities.formatDate(new Date(now.getTime()-(2*1000*60*60*24)), "GMT-8", "MM/d/yyyy"));

Другими словами, просто сделайте заглавную букву Y строчной буквой y, и все готово.

person Cooper    schedule 02.01.2021