JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでDateオブジェクトのクローン(複製)を作成する方法

JavaScriptでDateオブジェクトのクローン(複製)を作成するには、getTime()メソッドを活用するのが定番の手法です。getTime()は1970年1月1日00:00:00 UTCからの経過時間をミリ秒で返すため、この値を新しいDateコンストラクタに渡すことで、同じ時刻を持つまったく別のDateオブジェクトを生成できます。

以下は、現在の日付を複製するサンプルコードです。

コード例

<html>
   <head>
      <title>JavaScript Clone Date</title>
   </head>
   <body>
      <script>
         var current_date, clonedDate;
         current_date = new Date();
         document.write(current_date);
         var clonedDate = new Date(current_date.getTime());
         document.write("<br>"+clonedDate);
      </script>
   </body>
</html>

実行結果

Mon May 28 2018 09:27:54 GMT+0530 (India Standard Time)
Mon May 28 2018 09:27:54 GMT+0530 (India Standard Time)

コードの解説

ポイントは new Date(current_date.getTime()) の部分です。元のオブジェクトからタイムスタンプ(ミリ秒)を取り出し、その値をもとに新しいDateインスタンスを作成しています。こうして生成された2つのオブジェクトは互いに独立しているため、片方のsetTime()setFullYear()などで日付を変更しても、もう片方には一切影響しません。

補足:その他の複製方法

new Date(current_date)のように、既存のDateオブジェクトをそのまま引数として渡すことでも複製できます。ただし、古いブラウザや一部の実装では挙動が異なる場合があるため、getTime()を使う方法が最も確実で互換性の高いアプローチといえます。

  1. 【JavaScript】特定のキーを除いたオブジェクトをコピーする方法(シャローコピーとディープコピー)

    JavaScriptであるオブジェクトをコピーしたいけれど、特定のキー(プロパティ)だけは含めたくない——そんな場面は開発でよくあります。最もシンプルな方法は、まずオブジェクト全体をコピーし、その後不要なプロパティを削除するというアプローチです。ただし、オブジェクトのコピーには「浅いコピー(シャローコピー)」と「深いコピー(ディープコピー)」という2種類がある点に注意が必要です。それぞれの特徴と使い方を見ていきましょう。シャローコピー(浅いコピー)とはシャローコピーは、可能な限り最小限の複製を行う方法です。コレクションの「構造」だけがコピーされ、中身の要素までは複製されません。つまり、元のオブ

  2. JavaScriptでDateオブジェクトを作成する方法をわかりやすく解説

    JavaScriptで日付や時刻を扱うには、Dateオブジェクトを使用します。new Date()コンストラクタを呼び出すだけで、現在の日時に基づいたDateオブジェクトを簡単に生成できます。以下に、ボタンをクリックすると現在の日時を持つDateオブジェクトを作成し、画面に表示するサンプルコードを示します。コード例<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport"