GAS: `Utilities.formatDate` バグってる? 2020-12-28


概要

Google Apps Script(GAS)の話。
今日(2020-12-28)から?
2020年なのに2021年になる

追記: ただのフォーマット指定ミスでした

内容

コード

function myFunction() {
  const date = new Date()
  console.log(date)
  console.log(Utilities.formatDate(date, 'JST', 'YYYY-MM-dd'))
  console.log(Utilities.formatDate(date, 'UTC', 'YYYY-MM-dd'))
  console.log(Utilities.formatString("%d-%02d-%02d", date.getFullYear(), date.getMonth() + 1, date.getDate()))
}

ログ

[20-12-28 10:26:16:935 JST] Mon Dec 28 2020 10:26:16 GMT+0900 (日本標準時)
[20-12-28 10:26:16:938 JST] 2021-12-28
[20-12-28 10:26:16:939 JST] 2021-12-28
[20-12-28 10:26:16:944 JST] 2020-12-28
  • date の段階では2020年
  • Utilities.formatDate の結果は2021年

まとめ

2020-12-28 10:28現在。
この記事のような状態。

取り急ぎ

Utilities.formatString("%d-%02d-%02d", date.getFullYear(), date.getMonth() + 1, date.getDate())

にして運用中

追記

formatの指定が悪かったみたい。
参考: Utilities.formatDate 年末の日付がおかしい??

コード:

function myFunction() {
  const date = new Date()
  console.log(date)
  console.log(Utilities.formatDate(date, 'JST', 'YYYY-MM-dd'))
  console.log(Utilities.formatDate(date, 'UTC', 'YYYY-MM-dd'))
  console.log(Utilities.formatString("%d-%02d-%02d", date.getFullYear(), date.getMonth() + 1, date.getDate()))

  console.log(Utilities.formatDate(date, 'UTC', 'yyyy-MM-dd'))
}

ポイント: 年は yyyy

ログ:

[20-12-27 17:36:46:446 PST] Mon Dec 28 2020 10:36:46 GMT+0900 (日本標準時)
[20-12-27 17:36:46:451 PST] 2021-12-28
[20-12-27 17:36:46:453 PST] 2021-12-28
[20-12-27 17:36:46:457 PST] 2020-12-28
[20-12-27 17:36:46:458 PST] 2020-12-28