customParseFormat 拡張した dayjs で TZ 環境変数 と指定するフォーマットで罠にハマる

Z 指定したUTC日付はフォーマットで渡してパースしてもUTC扱いされると思ってた。 フォーマット指定では Z があろうが TZ 環境変数に依存する模様 いやいやいや。。。

フォーマット指定時に意図しない結果になる

TZ=UTC

dayjs('2022-12-17T11:43:29.277Z', 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]').toDate()
// => 2022-12-17T11:43:29.277Z

TZ=Asia/Tokyo

TZ=Asia/Tokyoの場合は -9 時間されインスタンス化される!!!!!!(いやいやいや!!!)

dayjs('2022-12-17T11:43:29.277Z', 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]').toDate()
// => 2022-12-17T02:43:29.277Z

フォーマットを指定しなければ問題ない

TZ=UTC

dayjs('2022-12-17T11:43:29.277Z').toDate()
// => 2022-12-17T11:43:29.277Z

TZ=Asia/Tokyo

dayjs('2022-12-17T11:43:29.277Z').toDate()
// => 2022-12-17T11:43:29.277Z