/timezone-testrunner-playground

タイムゾーンまわりの日付処理の検証/Node.js標準テストランナーの素振り

Primary LanguageTypeScript

timezone-testrunner-playground

タイムゾーンまわりの日付処理の検証/Node.js 標準テストランナーの素振り

クライアントとサーバーで時刻がずれる問題

結論:dayjs を使ってはいけない

  • そもそも dayjs("2022-01-01 00:00:00") からして副作用関数
  • .format() も副作用関数
    • .tz().format() は参照透過。もちろん toISOString()
  • もし dayjs を使うなら dayjs('ISODateString').tz().format()dayjs.tz('withoutTimezone').toISOString() 以外使ってはいけない
    • しかしこの二つの処理では .tz() の意味が別だろ? 無理やりメソッドチェーンにするからこんな曖昧な仕様になるんだよ
  • 結局のところ dayjs オブジェクトDate オブジェクトと欠陥を抱えており、このライブラリには罠が多すぎる
    • どのメソッドとどのメソッドを組み合わせれば参照透過になるのか、どのメソッドを単体で使うとローカルタイムゾーンという副作用をもつのか、API からまったく見えてこない
  • date-fns を使えば全て解決する

timezone

node:test

特定のディレクトリ内の TypeScript ファイルの Node 組み込みテストランナーを実行するには?· 問題 #3902 · nodejs/help

ESModule

TypeScript

pnpm