JavaScript には現在、時刻のない日付を表す組み込みの標準オブジェクトがありません。このオブジェクトを使用するときはDate
、その名前にかかわらず、他の言語の呼び出しに近い「日付と時刻」オブジェクトと考える必要がありますDateTime
。提供しなくても、暗黙の時間コンポーネントが常に存在します。
オブジェクトのコンストラクターには、Date
渡す引数によって異なるいくつかの異なる形式があります。文字列を渡すと、その文字列を解析しようとします。ただし、文字列に含まれる内容によって効果が異なり、実装によって異なる場合があります。
例えば:
// This will be parsed as UTC at midnight (but doesn't work in IE8)
new Date("2013-05-31")
// This will be parsed as local time in Chrome, and cause "Invalid Date" in IE
new Date("2013-05-31 00:00:00")
// This will be parsed as local time at midnight, and usually works in all browsers, but is not standardized.
new Date("2013/05/31")
その最後のものは受け入れられるかもしれませんが、それでも私には怪しいようです. ほとんどの人はその形式を使用せず、mm/dd/yyyy または dd/mm/yyyy を入力する可能性が高く、文化や入力する日付によってはあいまいになる可能性があります。
Date
おそらく、数値引数をコンストラクターに渡す方がよいでしょう:
new Date(2013, 4, 31)
これを行うと、月は 1 ~ 12 ではなく 0 ~ 11 で実行されることに注意してください。を渡したので4
、これは 5 月を表します。これはエラーの一般的な原因であるため、注意して監視してください。
また、 Moment.jsなどのライブラリを使用すれば、ブラウザのバリエーションをすべて排除して、必要な任意の形式をサポートできることにも言及しておく必要があります。例えば:
// This will be parsed as local time
moment('2013-05-31','YYYY-MM-DD')
// This will be parsed as UTC
moment.utc('2013-05-31','YYYY-MM-DD')
他にも多くの優れた日付/時刻ライブラリがあります。古いブラウザーをサポートする必要がある場合は、Moment が適しています。ただし、最新のブラウザーをほとんどサポートしている場合は、代わりにLuxonまたはdate-fnsを試してください。