カテゴリ: Java 更新日: 2026/09/24

JavaのDateクラスのsetTimeメソッドの使い方を完全ガイド!初心者向けに日時変更を解説

Date のsetTimeメソッド
Date のsetTimeメソッド

先生と生徒の会話形式で理解しよう

生徒

「JavaのDateオブジェクトが持っている日時を、あとから変更することはできますか?」

先生

「できます。DateクラスのsetTimeメソッドを使うと、Dateオブジェクトが表す日時を変更できます。」

生徒

「setTimeには、年月日や時刻を指定するんですか?」

先生

「年月日を直接指定するのではなく、基準となる時刻から経過したミリ秒をlong型の値で指定します。」

生徒

「ミリ秒で日時を指定するんですね。現在時刻に変更することもできますか?」

先生

「できます。それでは、Dateクラスの基本からsetTimeメソッドの書き方、ミリ秒の考え方、getTimeメソッドとの違いまで順番に確認していきましょう。」

1. Dateクラスとは?

1. Dateクラスとは?
1. Dateクラスとは?

JavaのDateクラスは、特定の日時を表すために利用できるクラスです。java.utilパッケージに用意されており、Javaで日付や時刻を扱う方法を学習するときに登場する代表的なクラスの1つです。

Dateオブジェクトを作成すると、ある時点の日時を保持できます。たとえば、現在の日時を取得したり、指定された時点を保存したり、2つの日時を比較したりするときに利用できます。

JavaでDateクラスを利用する場合は、通常、プログラムの先頭でjava.util.Dateをインポートします。引数を指定せずにDateオブジェクトを作成すると、作成した時点の現在日時を表すオブジェクトになります。


import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        Date date = new Date();

        System.out.println(date);
    }
}

実行結果は、プログラムを実行した日時によって変わります。たとえば、次のような形式で表示されます。


Thu Sep 24 09:30:00 JST 2026

表示される曜日や月などが英語になっているため、初心者には少しわかりにくく見えるかもしれません。しかし、Dateオブジェクトの内部では特定の時点を表すための情報が管理されています。

Dateクラスを理解するときのポイント

Dateクラスは、年や月などを個別に保存するためだけのものではなく、時間の流れの中にある特定の時点を表すものとして考えると理解しやすくなります。

なお、現在のJavaでは、用途に応じてLocalDateやLocalDateTime、Instantなどの日時関連クラスを利用することも一般的です。ただし、既存のJavaプログラムやライブラリではDateクラスを扱う場面もあるため、Dateの基本的な仕組みやsetTimeメソッドについて理解しておくことには意味があります。

2. setTimeメソッドとは?

2. setTimeメソッドとは?
2. setTimeメソッドとは?

JavaのDateクラスに用意されているsetTimeメソッドは、Dateオブジェクトが表している日時を変更するためのメソッドです。すでに作成済みのDateオブジェクトに対して新しい時間を設定したい場合に利用できます。

setTimeメソッドには、long型の数値を引数として渡します。この数値は、基準となる日時から何ミリ秒経過した時点なのかを表しています。

基本的な書き方は、Date型の変数に続けてsetTimeを書き、丸括弧の中へlong型の値を指定する形です。


import java.util.Date;

public class SetTimeExample {
    public static void main(String[] args) {
        Date date = new Date();

        date.setTime(0L);

        System.out.println(date);
    }
}

日本標準時の環境では、実行結果は次のように表示されます。


Thu Jan 01 09:00:00 JST 1970

このプログラムでは、setTime(0L)を指定しています。末尾のLは、その整数リテラルをlong型として扱うことを表します。

setTimeメソッドを呼び出すと、新しいDateオブジェクトが返されるわけではありません。呼び出し元となったDateオブジェクト自身が表す時刻が変更されます。この点はJava初心者が理解しておきたいポイントです。

つまり、DateのsetTimeメソッドは、日時を取得するためのメソッドではなく、すでに存在しているDateオブジェクトの時間を設定し直すためのメソッドです。

3. setTimeで使うミリ秒とは?

3. setTimeで使うミリ秒とは?
3. setTimeで使うミリ秒とは?

setTimeメソッドを理解するためには、ミリ秒について知っておく必要があります。ミリ秒は時間を表す単位で、1000ミリ秒が1秒です。したがって、60000ミリ秒で1分、3600000ミリ秒で1時間となります。

Dateクラスで使用するミリ秒の基準となるのは、1970年1月1日0時0分0秒の協定世界時です。この基準となる時刻は、Unixエポックやエポック時刻の基準などと呼ばれます。

setTimeに0Lを指定すると、この基準時刻そのものを表します。ただし、Dateオブジェクトを文字列として表示したときには、実行環境のタイムゾーンに合わせた表現になる場合があります。

たとえば、日本標準時は協定世界時より9時間進んでいるため、日本の環境でsetTime(0L)を設定してDateを表示すると、1970年1月1日の9時として表示されます。同じ内部の時点でも、表示するときのタイムゾーンによって見え方が変わることを覚えておきましょう。

次のプログラムでは、基準時刻から1日後をミリ秒で計算しています。


import java.util.Date;

public class OneDayLaterExample {
    public static void main(String[] args) {
        Date date = new Date();

        long oneDay = 24L * 60 * 60 * 1000;
        date.setTime(oneDay);

        System.out.println(date);
    }
}

日本標準時の環境では、次のような結果になります。


Fri Jan 02 09:00:00 JST 1970

1日は24時間で、1時間は60分、1分は60秒、1秒は1000ミリ秒です。そのため、これらを掛け合わせることで1日分のミリ秒を求めています。

サンプルでは最初の24を24Lとしています。これによって計算をlong型として扱いやすくしています。日時のミリ秒は大きな数値になるため、Javaで時間をミリ秒として扱う場合はlong型を利用することが重要です。

4. 現在時刻をsetTimeで設定する方法

4. 現在時刻をsetTimeで設定する方法
4. 現在時刻をsetTimeで設定する方法

Javaでは、現在時刻をミリ秒として取得する方法があります。代表的なのがSystem.currentTimeMillis()です。このメソッドを実行すると、現在時刻を基準時刻からの経過ミリ秒として取得できます。

取得した値をDateクラスのsetTimeメソッドへ渡せば、Dateオブジェクトが表す時刻を現在時刻へ変更できます。


import java.util.Date;

public class CurrentTimeExample {
    public static void main(String[] args) {
        Date date = new Date(0L);

        long currentTime = System.currentTimeMillis();
        date.setTime(currentTime);

        System.out.println(date);
    }
}

実行結果は実行した日時によって変わります。たとえば、次のように表示されます。


Thu Sep 24 09:30:00 JST 2026

このプログラムでは、最初にnew Date(0L)で基準時刻を表すDateオブジェクトを作っています。その後、System.currentTimeMillis()で現在時刻のミリ秒を取得し、setTimeメソッドを使ってDateオブジェクトの時刻を変更しています。

もちろん、単純に現在日時を表すDateオブジェクトが必要なだけならnew Date()でも取得できます。この例は、setTimeメソッドによって既存のDateオブジェクトの値を変更できることを確認するためのものです。

現在時刻との関係

System.currentTimeMillisで取得したlong型の値とDateのsetTimeを組み合わせることで、ミリ秒で表された現在時刻をDateオブジェクトへ設定できます。

5. getTimeメソッドとの違いを理解しよう

5. getTimeメソッドとの違いを理解しよう
5. getTimeメソッドとの違いを理解しよう

DateクラスのsetTimeメソッドと一緒に覚えておきたいのがgetTimeメソッドです。名前が似ていますが、2つのメソッドでは処理する方向が異なります。

getTimeメソッドは、Dateオブジェクトが表している時刻をlong型のミリ秒として取得するために使います。一方、setTimeメソッドは、long型のミリ秒をDateオブジェクトへ設定するために使います。

メソッド 役割 値の流れ
getTime Dateが表す時刻を取得する Dateからlong型へ
setTime Dateが表す時刻を変更する long型からDateへ

次のサンプルでは、1つ目のDateオブジェクトからgetTimeメソッドでミリ秒を取得し、その値を2つ目のDateオブジェクトへsetTimeメソッドで設定しています。


import java.util.Date;

public class GetTimeSetTimeExample {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(0L);

        long time = date1.getTime();
        date2.setTime(time);

        System.out.println(date1);
        System.out.println(date2);
        System.out.println(date1.equals(date2));
    }
}

実行すると、date1とdate2は同じ時点を表すようになります。最後の比較結果は次のようになります。


true

この仕組みを理解すると、Dateオブジェクトが持つ時刻を別のDateオブジェクトへ設定する処理もわかりやすくなります。JavaでDateをミリ秒へ変換したい場合はgetTime、ミリ秒からDateの時刻を設定したい場合はsetTimeというように、処理の方向で区別すると覚えやすいでしょう。

6. setTimeを使って一定時間後の日時を設定する方法

6. setTimeを使って一定時間後の日時を設定する方法
6. setTimeを使って一定時間後の日時を設定する方法

setTimeメソッドとgetTimeメソッドを組み合わせると、現在のDateオブジェクトが表している時刻を基準にして、一定時間後の日時を設定することもできます。

たとえば、現在の時刻から1時間後を求めたい場合は、現在時刻のミリ秒に1時間分のミリ秒を加え、その値をsetTimeメソッドへ渡します。


import java.util.Date;

public class AddOneHourExample {
    public static void main(String[] args) {
        Date date = new Date();

        long oneHour = 60L * 60 * 1000;
        long newTime = date.getTime() + oneHour;

        date.setTime(newTime);

        System.out.println(date);
    }
}

このプログラムでは、まずdate.getTime()によって現在のDateオブジェクトが表す時刻をミリ秒で取得しています。そこへ1時間分のミリ秒を加え、計算結果をsetTimeメソッドへ渡しています。

同じ考え方で、一定時間前の日時を表すこともできます。その場合は、現在のミリ秒から必要な時間分のミリ秒を引きます。

ただし、実際の日時計算では、単純にミリ秒を足したり引いたりする方法が適切とは限りません。タイムゾーンや夏時間、暦に基づいた日付計算などを考慮する必要がある場合は、java.timeパッケージに用意されている日時クラスを利用する方法も検討します。

DateのsetTimeを学習する段階では、まず時刻をミリ秒という数値で扱えることを理解し、getTimeで取得した値を計算してsetTimeで設定できるという基本的な流れを覚えるとよいでしょう。

7. setTimeは元のDateオブジェクトを書き換える

7. setTimeは元のDateオブジェクトを書き換える
7. setTimeは元のDateオブジェクトを書き換える

JavaのDateクラスでsetTimeメソッドを利用するときに重要なのが、元のDateオブジェクトの状態が変更されるという点です。setTimeを実行するたびに別のDateオブジェクトが自動的に作られるわけではありません。

このように、作成したあとから内部の状態を変更できるオブジェクトは、変更可能なオブジェクトとして扱われます。DateクラスはsetTimeメソッドによって内部の時刻を変更できます。

次のように、1つのDateオブジェクトを2つの変数から参照している場合には特に注意が必要です。


import java.util.Date;

public class DateReferenceExample {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = date1;

        date2.setTime(0L);

        System.out.println(date1);
        System.out.println(date2);
    }
}

日本標準時の環境では、両方とも次の時刻を表すことになります。


Thu Jan 01 09:00:00 JST 1970
Thu Jan 01 09:00:00 JST 1970

date2に対してsetTimeを実行したにもかかわらず、date1から確認した日時も変わっています。これは、date1とdate2が同じDateオブジェクトを参照しているためです。

Java初心者の場合、変数を代入するとDateオブジェクトそのものがコピーされたように感じることがあります。しかし、クラス型の変数を別の変数へ単純に代入した場合、同じオブジェクトを参照する形になることがあります。

setTimeはDateオブジェクトの状態を変更するメソッドなので、同じDateオブジェクトを複数の場所から利用しているプログラムでは、変更の影響を考える必要があります。この考え方はDateだけではなく、Javaのオブジェクトと参照を理解するうえでも重要です。

8. DateとsetTimeを使うときに初心者が確認したいポイント

8. DateとsetTimeを使うときに初心者が確認したいポイント
8. DateとsetTimeを使うときに初心者が確認したいポイント

JavaのDateクラスでsetTimeメソッドを利用するときには、まず引数として渡す値がlong型のミリ秒であることを確認しましょう。年月日をそのまま渡すメソッドではないため、setTimeの引数に何を指定するのかを正しく理解することが重要です。

次に覚えておきたいのが、基準となる時刻です。Dateで利用されるミリ秒は、1970年1月1日0時0分0秒の協定世界時を基準として考えます。正の値であれば基準より後の時点を表し、負の値を利用すれば基準より前の時点を表すこともできます。

また、Dateオブジェクトをそのまま画面へ表示した結果と、内部で表している時点を混同しないようにしましょう。Dateを文字列として表示した場合には、実行環境のタイムゾーンが影響します。そのため、同じミリ秒を設定しても、環境によって画面上の時刻表示が異なる場合があります。

setTimeを使うときの確認項目

setTimeの引数にはlong型のミリ秒を指定する

1000ミリ秒が1秒であることを理解する

基準時刻は1970年1月1日の協定世界時であることを確認する

getTimeは取得、setTimeは設定と区別する

setTimeを実行すると元のDateオブジェクトが変更される

画面表示ではタイムゾーンの影響を受けることを理解する

Javaで日付と時刻を扱う場合には、Dateクラスだけを使うとは限りません。現在のJavaにはjava.timeパッケージがあり、日付だけを表すLocalDate、日時を表すLocalDateTime、時系列上の瞬間を表すInstantなど、用途に合わせたクラスが用意されています。

そのため、新しく日時処理を設計するときはjava.timeのクラスが適している場合があります。一方で、既存システム、古いJavaコード、外部ライブラリとの連携などではjava.util.Dateを受け取ったり返したりする処理に出会うことがあります。DateとsetTimeの基本を知っていれば、そのようなコードも読みやすくなります。

setTimeメソッドそのものの使い方は難しくありません。Date型の変数に対してsetTimeを呼び出し、long型のミリ秒を渡すことで、そのDateオブジェクトが表す時点を変更できます。ただし、ミリ秒の基準、タイムゾーン、元のオブジェクトが変更されることなどを一緒に理解しておくことが大切です。

Java初心者がDateのsetTimeを学ぶ場合は、最初にsetTime(0L)で基準時刻を確認し、次にSystem.currentTimeMillisで現在時刻を設定し、その後でgetTimeと組み合わせた時間計算を試すと理解しやすくなります。実際に数値を変更しながら実行結果を比較することで、Javaの日時、ミリ秒、Dateクラス、setTimeメソッドの関係を具体的に理解できるようになります。

特にJavaの日時処理では、日時を画面に表示することと、プログラム内部で時点を保持することは分けて考える必要があります。setTimeは表示形式を変更するメソッドではなく、Dateオブジェクトが表す時点そのものをミリ秒によって設定するメソッドです。表示方法を変更したい場合には、日時の書式を扱う別の仕組みが必要になります。

Date、setTime、getTime、System.currentTimeMillis、ミリ秒、タイムゾーンといった用語は、最初は別々の機能に見えるかもしれません。しかし、基準時刻からの経過時間をlong型のミリ秒で扱い、それをDateオブジェクトへ設定したり取得したりするという流れで整理すると理解しやすくなります。Javaで日時を扱う基礎知識として、それぞれの役割を関連付けながら覚えていきましょう。

まとめ

まとめ
まとめ

JavaのDateクラスは、特定の日時や時点を扱うために利用できるクラスで、java.utilパッケージに用意されています。今回学習したsetTimeメソッドは、すでに作成されているDateオブジェクトが表す時刻を、指定したミリ秒の値を使って変更するためのメソッドです。Javaで日付や時刻を扱うプログラムを読むときには、DateクラスとsetTimeメソッドの関係を理解しておくと、日時データがどのように管理されているのかを把握しやすくなります。

setTimeメソッドで最初に覚えておきたいのは、年月日や時分秒を直接指定するメソッドではないという点です。setTimeメソッドの引数にはlong型の数値を指定します。この数値は、基準となる時刻から経過した時間をミリ秒で表したものです。1000ミリ秒が1秒となるため、時間をミリ秒として扱う場合には非常に大きな数値になることがあります。そのため、JavaのDateクラスではlong型を利用して時刻を扱います。

Dateクラスで時刻をミリ秒として考えるときの基準は、1970年1月1日0時0分0秒の協定世界時です。この基準となる時刻からどれだけ時間が経過したのかを数値で表すことで、特定の時点を管理できます。JavaのsetTimeメソッドで0Lを指定すると、この基準となる時点をDateオブジェクトへ設定できます。

DateのsetTimeメソッドの基本を振り返ろう

DateのsetTimeメソッドの基本的な使い方は難しくありません。まずDateオブジェクトを作成し、そのオブジェクトに対してsetTimeメソッドを呼び出します。引数としてlong型のミリ秒を渡すことで、Dateオブジェクトが表している時点を変更できます。


import java.util.Date;

public class DateSetTimeExample {
    public static void main(String[] args) {
        Date date = new Date();

        date.setTime(0L);

        System.out.println(date);
    }
}

日本標準時の環境で実行すると、次のような結果になります。


Thu Jan 01 09:00:00 JST 1970

基準となっているのは協定世界時の1970年1月1日0時ですが、日本標準時は協定世界時より9時間進んでいるため、日本の環境では9時として表示されます。ここで大切なのは、setTimeに指定したミリ秒が変わったわけではないということです。同じ時点でも、画面へ表示するときに使用されるタイムゾーンによって見え方が変わる場合があります。

Java初心者がDateクラスを学習するときは、Dateが表している時点と、画面に表示される年月日や時刻を分けて考えることが重要です。setTimeメソッドは表示形式を変更するためのメソッドではありません。Dateオブジェクトが表している時点そのものを変更するためのメソッドです。

getTimeとsetTimeの違いを整理しよう

DateクラスのsetTimeメソッドを理解するときには、getTimeメソッドとの違いも一緒に覚えておくとわかりやすくなります。名前は似ていますが、処理する方向が反対です。getTimeメソッドはDateオブジェクトが表している時刻をlong型のミリ秒として取得します。一方、setTimeメソッドはlong型のミリ秒をDateオブジェクトへ設定します。

メソッド 主な役割 処理の方向
getTime Dateが表す時刻を取得する Dateからlong型のミリ秒へ変換する
setTime Dateが表す時刻を設定する long型のミリ秒をDateへ設定する

たとえば、1つのDateオブジェクトが持っている時刻を別のDateオブジェクトへ設定したい場合には、getTimeとsetTimeを組み合わせることができます。最初のDateからgetTimeでミリ秒を取得し、その値を別のDateのsetTimeへ渡します。


import java.util.Date;

public class DateCopyTimeExample {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(0L);

        long time = date1.getTime();
        date2.setTime(time);

        System.out.println(date1.equals(date2));
    }
}

実行結果は次のようになります。


true

このプログラムでは、date1が表す時刻をgetTimeメソッドによってlong型のミリ秒として取り出しています。そのミリ秒をdate2のsetTimeメソッドへ渡しているため、2つのDateオブジェクトが同じ時点を表すようになります。JavaのDateで時刻を取得するときはgetTime、時刻を設定するときはsetTimeというように整理して覚えると混乱しにくくなります。

現在時刻を設定するときの考え方

Javaで現在時刻をミリ秒として取得したい場合には、System.currentTimeMillis()を利用できます。System.currentTimeMillisで取得できる値も、基準となる時刻から現在までの経過時間をミリ秒で表したlong型の値です。そのため、取得した値をDateのsetTimeメソッドへそのまま渡すことができます。


import java.util.Date;

public class DateCurrentTimeExample {
    public static void main(String[] args) {
        Date date = new Date(0L);

        long currentTime = System.currentTimeMillis();
        date.setTime(currentTime);

        System.out.println(date);
    }
}

このサンプルでは、最初に基準時刻を表すDateオブジェクトを作成しています。その後でSystem.currentTimeMillisを利用して現在時刻をミリ秒として取得し、その値をsetTimeへ渡しています。その結果、Dateオブジェクトが表す時刻は現在時刻へ変更されます。

単純に現在時刻を表すDateオブジェクトを作成するだけであれば、引数を指定せずにnew Date()と記述する方法があります。そのため、現在時刻を取得するためだけに必ずsetTimeを使う必要があるわけではありません。setTimeは、すでに存在しているDateオブジェクトの時刻をあとから設定し直したいときに利用するメソッドだと理解しておくとよいでしょう。

一定時間後の日時を設定するときにも利用できる

getTimeメソッドで取得したミリ秒に一定時間を加算し、その結果をsetTimeメソッドへ渡すことで、元のDateオブジェクトが表している時刻から一定時間後の時点を設定することもできます。たとえば、1時間後であれば、60分と60秒と1000ミリ秒を掛け合わせて1時間分のミリ秒を求めます。


import java.util.Date;

public class DateAddTimeExample {
    public static void main(String[] args) {
        Date date = new Date();

        long oneHour = 60L * 60 * 1000;
        long newTime = date.getTime() + oneHour;

        date.setTime(newTime);

        System.out.println(date);
    }
}

このように、getTimeで現在の値を取得し、必要なミリ秒を計算してからsetTimeで設定するという流れを理解すると、JavaのDateクラスがどのように時刻を扱っているのかが見えやすくなります。一定時間前を求めたい場合には、反対に必要なミリ秒を引くという考え方もできます。

ただし、実際のシステムで日付を加算したり、月をまたぐ計算をしたり、タイムゾーンを考慮したりする場合には、単純なミリ秒の足し算だけで考えないほうがよいケースもあります。Javaにはjava.timeパッケージが用意されており、LocalDate、LocalDateTime、Instantなど、用途に応じた日時関連クラスを利用できます。

DateとsetTimeについては、既存のJavaプログラムやライブラリでDate型を扱う場合にも必要になる知識です。そのため、現在の日時処理ではjava.timeを利用する場面が増えていても、java.util.Dateの基本的な仕組みを理解しておくと既存コードを読むときに役立ちます。

setTimeは元のDateオブジェクトを変更する

setTimeメソッドについて忘れやすいポイントが、呼び出したDateオブジェクト自身の状態が変更されることです。setTimeを呼び出したときに、新しいDateオブジェクトが作成されて返されるわけではありません。すでに存在しているDateオブジェクトが表す時刻が書き換えられます。

この特徴は、複数の変数が同じDateオブジェクトを参照している場合に特に重要です。1つの変数からsetTimeを実行すると、同じDateオブジェクトを参照している別の変数から確認した場合にも変更後の日時が見えることになります。


import java.util.Date;

public class DateReferenceExample {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = date1;

        date2.setTime(0L);

        System.out.println(date1);
        System.out.println(date2);
    }
}

日本標準時の環境では、次のような実行結果になります。


Thu Jan 01 09:00:00 JST 1970
Thu Jan 01 09:00:00 JST 1970

date2だけにsetTimeを実行したように見えますが、date1とdate2は同じDateオブジェクトを参照しています。そのため、date1から確認しても変更後の日時が表示されます。これはDateのsetTimeだけに関係する話ではなく、Javaのクラス、オブジェクト、参照を理解するうえでも重要な考え方です。

ミリ秒とタイムゾーンを混同しないことが大切

Dateクラスを使った日時処理では、ミリ秒として保持されている時点と、画面へ表示された日時を分けて考える必要があります。setTimeに同じミリ秒を指定していても、表示する環境のタイムゾーンによって年月日や時刻の表示が異なる場合があります。

たとえば、setTimeに0を設定した場合の基準は1970年1月1日0時0分0秒の協定世界時です。日本標準時では9時間の時差があるため、日本の環境でDateを表示すると1970年1月1日9時として見えます。この違いを知らないと、setTimeで指定した値が9時間ずれているように感じることがあります。

Javaの日時処理で意図しない時刻が表示された場合には、setTimeに指定したミリ秒だけを見るのではなく、どのタイムゾーンで表示されているのかも確認することが大切です。日時データを扱うWebシステムや海外向けのシステムでは、タイムゾーンの考え方が特に重要になります。

DateのsetTimeで覚えておきたいポイント

Dateクラスはjava.utilパッケージに用意されている日時を扱うクラスです。

setTimeメソッドはDateオブジェクトが表す時刻を変更するときに利用します。

setTimeの引数にはlong型のミリ秒を指定します。

1000ミリ秒が1秒であり、時間を扱う場合は大きな数値になるためlong型を利用します。

基準となる時刻は1970年1月1日0時0分0秒の協定世界時です。

getTimeはDateからミリ秒を取得し、setTimeはミリ秒をDateへ設定します。

System.currentTimeMillisを使うと現在時刻をミリ秒として取得できます。

setTimeを実行すると元のDateオブジェクトが表す時刻が変更されます。

Dateを画面へ表示した日時は、実行環境のタイムゾーンによって異なる場合があります。

Java初心者がDateクラスのsetTimeメソッドを学ぶ場合には、まずsetTimeに0を設定して基準時刻を確認し、次にSystem.currentTimeMillisで現在時刻を設定し、その後にgetTimeと組み合わせて一定時間後の日時を作るという順番で練習すると理解しやすくなります。実際にプログラムを実行してミリ秒の値を変更すると、DateとsetTimeの関係をより具体的に確認できます。

Date、setTime、getTime、System.currentTimeMillis、long型、ミリ秒、エポック時刻、タイムゾーンは、それぞれ独立した用語として暗記するよりも、日時をミリ秒として取得し、その値をDateオブジェクトへ設定するという流れで関連付けて理解すると覚えやすくなります。Javaで日付と時刻を扱う基本として、setTimeがどのような値を受け取り、どのDateオブジェクトを変更するのかを確認しながら使うことが大切です。

先生と生徒の振り返り会話

生徒

「DateのsetTimeメソッドは、作成済みのDateオブジェクトが表している日時を変更するときに使うんですね。」

先生

「はい。ただし、年月日を直接渡すのではなく、基準となる時刻からの経過時間をミリ秒で指定するところが大切です。」

生徒

「基準になるのは1970年1月1日0時0分0秒の協定世界時でしたね。」

先生

「そのとおりです。setTimeに0を指定すると、その基準となる時点を表します。ただし、日本の環境で表示するとタイムゾーンの関係で9時として見えることがあります。」

生徒

「setTimeに渡す値はlong型でしたが、これは日時をミリ秒で表すと数値が大きくなるからですね。」

先生

「はい。1000ミリ秒で1秒なので、現在の日時などを基準時刻からのミリ秒で表すと非常に大きな数値になります。そのためlong型で扱います。」

生徒

「getTimeとの違いもわかりました。getTimeはDateからミリ秒を取得して、setTimeはミリ秒をDateへ設定するんですよね。」

先生

「はい。その2つを処理の方向で覚えるとわかりやすいです。getTimeで取得した値に時間を加えて、setTimeで設定し直すこともできます。」

生徒

「System.currentTimeMillisを使えば、現在時刻のミリ秒も取得できるんですね。」

先生

「そうです。その値をsetTimeへ渡せば、既存のDateオブジェクトを現在時刻へ変更できます。ただ、現在時刻のDateを新しく作るだけならnew Dateでも取得できます。」

生徒

「setTimeを使うときは、元のDateオブジェクトが変更されることにも注意が必要でしたね。」

先生

「はい。複数の変数が同じDateオブジェクトを参照している場合は、1つの変数からsetTimeを実行すると、別の変数から見た日時にも変更が反映されます。」

生徒

「日時が思っていた時間と違って表示されたときは、タイムゾーンも確認したほうがいいということですね。」

先生

「その考え方が大切です。Dateが表している時点と、タイムゾーンを使って画面へ表示された日時は分けて考えましょう。」

生徒

「DateのsetTimeは単に日時を変更するメソッドとして覚えるだけでなく、ミリ秒、getTime、現在時刻、タイムゾーン、オブジェクトの参照まで一緒に理解するといいんですね。」

先生

「そのとおりです。まずは簡単な値でsetTimeを実行して、次にgetTimeやSystem.currentTimeMillisと組み合わせてみると、Javaの日時処理の仕組みがより理解しやすくなります。」

生成AIを基礎から学びたい方へ

ChatGPTなどの生成AIをこれから学びたい方に向けて、AIスキルアカデミーの口コミ・評判、料金、無料セミナーの内容を詳しくまとめています。

AIスキルアカデミーの口コミ・評判を詳しく見る
カテゴリの一覧へ
新着記事
New1
Java
JavaのassertFalseとは?JUnit5のAssertionsクラスを初心者向けにわかりやすく解説
新規投稿
New2
Thymeleaf
ThymeleafでDBから取得したデータを編集フォームの初期値にセットする方法!Entity連携を初心者向けに解説
新規投稿
New3
Spring
JavaのSpringで使う@FutureOrPresentアノテーションを完全ガイド!初心者でもわかる日付バリデーション
新規投稿
New4
Java
JavaのLocalDateクラスのgetMonthValueメソッド完全ガイド!初心者でもわかる数値で月を取得する方法
新規投稿
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaサーブレットのdoPostメソッドとは?初心者向けにやさしく解説!
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpServletResponseクラスを初心者向けに徹底解説!
No.3
Java&Spring記事人気No3
Servlet
JavaのHttpServletRequestWrapperとgetSessionメソッドの使い方を徹底解説!初心者向けServletのセッション管理入門
No.4
Java&Spring記事人気No4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
Servlet
JavaのHttpSessionインターフェースとgetSessionContextメソッドを徹底解説!初心者でもわかるセッション管理の基本
No.6
Java&Spring記事人気No6
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionAttributeListenerとattributeRemovedメソッドの使い方を徹底解説!初心者でもわかるセッション属性の削除と監視
No.8
Java&Spring記事人気No8
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎