new Dateでstring型からDate型の変数を生成するとき、date-fnsを使ってJSTなどのタイムゾーンを使う方法
今回はnew Dateで例えば「’2024-08-01’」というstring型の文字列をDate型に変換するとき、date-fnsというライブラリを使ってJSTなどのタイムゾーンを考えたDate型に変更する方法についてご紹介いたします。
date-fnsのバージョンは3.6.0です。
この記事はやや私個人の備忘録的な要素が強い記事となります。
new Dateでstring型からDate型の変数を生成するとき、date-fnsを使ってJSTなどのタイムゾーンを使う方法
まず、JSファイルで次のように変数を定義した場合の結果について最初に見ておきましょう。
1 2 3 4 |
import { parse } from 'date-fns'; test1 = new Date('2024-8-1'); test2 = new Date('2024-08-01'); test3 = parse('2024-08-01', Constants.YYYYMMDD_DASH, new Date()); |
この変数を画面上に表示させると次のようになります。
1 2 3 4 5 6 |
// test1 Thu Aug 01 2024 00:00:00 GMT+0900 (日本標準時) // test2 Thu Aug 01 2024 09:00:00 GMT+0900 (日本標準時) // test3 Thu Aug 01 2024 00:00:00 GMT+0900 (日本標準時) |
この結果から分かることとしては、「’2024-8-1’」のstringの文字列をDate型にするとタイムゾーンがきちんと考慮されますが、「’2024-08-01’」のstringの文字列をDate型にするとタイムゾーンが考慮されません。
「’2024-08-01’」についてもタイムゾーンを考慮したDate型にする場合は、date-fnsの関数の一つであるparseを使用する必要があります。
バグの元となるため、string型の文字列をDate型にする際はparseを使った方が安全そうですね。
終わりに
今回はnew Dateで例えば「’2024-08-01’」というstring型の文字列をDate型に変換するとき、date-fnsというライブラリを使ってJSTなどのタイムゾーンを考えたDate型に変更する方法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません