ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのDateクラスの詳細説明(コード例)

JavaScriptのDateクラスの詳細説明(コード例)

不言
不言オリジナル
2018-09-12 17:24:031951ブラウズ

この記事では、JavaScript の Date クラスの詳細な説明 (コード例) を紹介します。必要な方は参考にしてください。

Date は JS の重要な組み込みオブジェクトです。そのインスタンスは主に時刻と日付を処理するために使用され、その時刻は 1970 年 1 月 1 日 (世界標準時) からのミリ秒数に基づいており、タイムスタンプの長さは次のようになります。 13 桁 (Unix のタイムスタンプとは異なり、長さは 10 ビットです)。日付と時刻については、無数の使用シナリオがあるため、いくつかの詳細と規則に特別な注意を払う必要があります。

1. コンストラクター

は、new Date() を通じてインスタンス化して、Date オブジェクトのインスタンスを取得できます。 Date() を直接実行すると、時刻文字列が取得されることに注意してください。 Date() ,将得到一个时间字符串。

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

95712e0b0bc62c64b1fddfac486f9cb8

其中对构造函数的参数说明(参考 MDN ):

  • 如果没有输入任何参数,则Date的构造器会依据系统设置的当前时间来创建一个Date对象。

  • 如果提供了至少两个参数,其余的参数均会默认设置为1(如果没有提供day参数)或者0。

  • JavaScript的时间是由世界标准时间(UTC)1970年1月1日开始,用毫秒计时,一天由86,400,000毫秒组成。Date对象的范围是-100,000,000天至100,000,000天(等效的毫秒值)。

  • JavaScript的Date对象为跨平台提供了统一的行为。时间属性可以在不同的系统中表示相同的时刻,而如果使用了本地时间对象,则反映当地的时间。

  • JavaScript 的Date对象提供了数个UTC时间的方法,也相应提供了当地时间的方法。UTC,也就是我们所说的格林威治时间,指的是time中的世界时间标准。而当地时间则是指执行JavaScript的客户端电脑所设置的时间。

  • 以一个函数的形式来调用JavaScript的Date对象(i.e., 不使用 new 操作符)会返回一个代表当前日期和时间的字符串。

2. 空值处理

// 以chrome为例
new Date();
// Mon Oct 23 2017 23:38:02 GMT+0800 (CST)

new Date(false);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(0);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(null);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date('');
// Invalid Date

new Date(undefined);
// Invalid Date

3. 特别提示

[Firefox]

不支持带 '-' 的完整时间,比如 new Date('2012-07-08 00:00:00') 为无效的值,而 new Date('2012-07-08') 是正确的值。

[month]

  • new Date(year, month, ……) 中的month从0开始计算

4. 值的边界

不同执行环境下的边界值有差异, Chrome 下甚至连负值都能支持。在实际生产环境中,不仅需要考虑时间的展示,还需要考虑其存储、计算等,因此在特定的场景下,我们需要尽可能考虑到数据库和浏览器中 Date 的有效范围。

以数据库 Derbyrrreee

95712e0b0bc62c64b1fddfac486f9cb8コンストラクターのパラメーターの説明 (MDN を参照):
  • JavaScript 時間は、ミリ秒単位で測定される世界時 (UTC) の 1970 年 1 月 1 日から始まり、1 日は 86,400,000 ミリ秒で構成されます。 Date オブジェクトの範囲は、-100,000,000 日から 100,000,000 日 (同等のミリ秒値) です。
  • JavaScript の Date オブジェクトは、プラットフォーム間で統一された動作を提供します。 time 属性は、異なるシステムの同じ瞬間を表すことができ、ローカル時間オブジェクトが使用されている場合は、ローカル時間を反映します。
  • 2. Null 値の処理rrreee は new Date('2012-07-08 など) を含む完全な時刻をサポートしていません00 :00:00') は無効な値ですが、new Date('2012-07-08') は正しい値です。 [month]月は 0 から始まります4 値の境界。 境界値は実行環境によって異なります。Chrome では負の値もサポートされます。実際の運用環境では、時刻の表示だけでなく、その保存や計算なども考慮する必要があります。そのため、特定のシナリオでは、データベースとブラウザの日付の有効範囲を可能な限り考慮する必要があります。 。 データベース Derby の保存時間を例として取り上げます。その境界は次のとおりです: 01-01
    パラメーターが入力されていない場合、次に、Date コンストラクターは、システムによって設定された現在時刻に基づいて Date オブジェクトを作成します。 少なくとも 2 つのパラメータが指定された場合、残りのパラメータはデフォルトで 1 (日付パラメータが指定されていない場合) または 0 に設定されます。
    JavaScript の Date オブジェクトは、いくつかの UTC 時間メソッドを提供し、それに応じてローカル時間メソッドも提供します。 UTC はグリニッジ標準時と呼ばれるもので、時間における世界標準時を指します。ローカル時間は、JavaScript を実行するクライアント コンピュータによって設定された時間を指します。 JavaScript の Date オブジェクトを関数として (つまり、new 演算子を使用せずに) 呼び出すと、現在の日付と時刻を表す文字列が返されます。
    3. 特別なリマインダー [Firefox]
    • 新しい Date(年、月、…) の
    説明 境界値
    最小の日付
    🎜 🎜最大日付🎜🎜9999-12-31🎜🎜🎜🎜最小時間🎜🎜00:00:00🎜🎜🎜🎜最大時間🎜🎜24:00:00🎜🎜🎜🎜最小タイムスタンプ🎜 🎜0001 -01- 01-00.00.00.000000🎜🎜🎜🎜最大タイムスタンプ🎜🎜9999-12-31-23.59.59.999999🎜🎜🎜🎜

    の日。 mysql 中,其范围定义为 1000-01-01to9999-12-31
    js 中,时间戳的最小值为 -8640000000000000 即公元前 271,821 年 4 月 20 日,最大值为 8640000000000000,即 275,760 年 9 月 13 日。规范中时间范围为 1970/1/1 前后 100,000,000

    5. 2038 年のバグ

    2038 年以降はタイムスタンプが不十分だと聞きました。

    コンピューターアプリケーションでは、2038年問題により、2038年には一部のソフトウェアが正常に動作しなくなる可能性があります。 UNIX 時間を使用して時刻を表現するすべてのプログラムは、1970 年 1 月 1 日から経過した秒数で時刻を表現するため (閏秒を無視する)、この影響を受けます。この時間表現は Unix 系オペレーティング システムの標準であり、他のほとんどのオペレーティング システムで使用するために C プログラミング言語で開発されたソフトウェアに影響します。ほとんどの 32 ビット オペレーティング システムでは、「time_t」データ モードは、符号付き 32 ビット整数 (signedint32) を使用して、計算された秒数を保存します。 「time_t」標準によると、この形式で表現できる最後の時刻は、2038 年 1 月 19 日火曜日、03:14:07 (UTC) です。この時点を超えると、時刻はラップアラウンドされ、内部的には負の数として表されるため、プログラムはこの時刻を 2038 年として認識せず、個々の実装に応じて 1970 年または 1901 年に戻る可能性があるため、動作しなくなります。間違った計算やアクションが発生する可能性があります。

    7. ライブラリ

    • moment - 時間の解析、書式設定、計算などをサポートする強力な時間処理ライブラリです。強力で、ブラウザと Node.js をサポートしています。圧縮されたボリュームは約 16.3 KB

    • date- fns - moment よりも軽量で、サイズが小さいイベント処理ライブラリ

    • dayjs - より軽量な moment.js

    関連推奨事項:

    JavaScript で Date クラスをカプセル化するサンプル コードの共有

    JavaScript DOMサンプルコード詳細解説

    以上がJavaScriptのDateクラスの詳細説明(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。