date-fns: parseISO(string) と new Date(string) の違いは何ですか? 質問する

date-fns: parseISO(string) と new Date(string) の違いは何ですか? 質問する

date-fns v2 を試しています。

実行時にいくつかエラーが発生しました:

parseISO("Apr 9, 2020, 12:00:00 am");

または

parseISO("Apr 9, 2020, 12:00:00 am", "MMM M, YYYY, hh:mm:ss aaaa");

しかし、これはうまくいきました:

new Date("Apr 9, 2020, 12:00:00 am");

どちらをいつ使用すべきかを理解しようとしていますが、parseISO() のドキュメントを見つけることができませんでした。

ベストアンサー1

ドキュメントparseISO ここ基本的に、parseISO次のような ISO 形式の日付文字列を保持する文字列を解析しようとします'2019-09-25T14:34:32.999Z'

解析しようとしているのは国際化された文字列です。つまり、'Apr 9, 2020, 12:00:00 am'米国ロケールでフォーマットされた日付文字列です。

new Date()環境 (ブラウザまたはノード) のロケールに依存しているため機能します。渡す文字列はロケールの形式と一致します。フランス語のロケールでフォーマットされた日付文字列を渡すと、失敗する可能性が高くなります。

国際化された文字列を解析するには、parse渡された日付文字列の形式も採用します。

日付をネットワーク経由で渡す場合 (HTTP REST API やデータベースなど)、日付時刻を渡したり保存したりする形式をすでに決めておく必要があります。通常は、ISO 形式の日付文字列、1970 年からの UTC でのミリ秒数、またはケースに適したその他の形式です。次に、「ネットワーク」または「保存」の仕様に従って、parseISOまたはを実行しますnew Date(milliseconds)

ブラウザベースの Web アプリを作成する場合は、ユーザーの地域を考慮する必要があります。ユーザーの地域やタイムゾーンを考慮する必要があるため、解析が面倒になる可能性があります。

おすすめ記事