1. クラスからクラスDate
への切り替えCalendar
このクラスは、そのシンプルさと Unix 標準のサポートによりプログラマーに人気がありましたDate
が、ご存知のとおり、どのバラにもトゲがあります。
プログラマーは「スマートな」Date
クラスを求めていました。そして彼らは授業という形で望んでいたものを手に入れましたCalendar
。これは、日付を保存するだけでなく、日付を使用して難しい操作を実行する方法として考案されました。
クラスの完全名はCalendar
java.util.Calendar です。コードで使用する場合は、インポート ステートメントに忘れずに追加してください。
次のコマンドを使用してオブジェクトを作成できますCalendar
。
Calendar date = Calendar.getInstance();
getInstance()
クラスの静的メソッドは、現在の日付で初期化されたオブジェクトCalendar
を作成します。Calendar
プログラムを実行しているコンピュータの設定に基づいて、希望するカレンダーが作成されます。
もっと正確に言えば、あなたが手に入れるカレンダー…それは、地球上の人間は単一のカレンダーに限定されていないからです。その代わりに、彼らはたくさん使います。そして、それらのほとんどすべてが、何らかの宗教または国と関連しています。このCalendar
クラスはそのうち 3 つをサポートします。
カレンダー | 説明 |
---|---|
グレゴリオ暦 | キリスト教のグレゴリオ暦 |
仏教カレンダー | 仏暦 |
日本語皇室カレンダー | 大日本帝国暦 |
ただし、中国カレンダーやアラビアカレンダーもあります。基本的に、時間を使って仕事をするのは思っているほど簡単ではありません。
このレッスンの執筆時点では、中国の暦では正式には 4716 年です。そして、イスラム暦によれば、その年は 1398 年です。プログラマーの友人よ、大きな世界へようこそ。
2. カレンダーオブジェクトの作成
世界で最も一般的なグレゴリオ暦を使用します。少なくとも中国がオラクルを買収し、中国のカレンダーを主流にするまでは。
次のようなステートメントを使用して、任意の日付のカレンダー オブジェクトを作成できます。
Calendar date = new GregorianCalendar(year, month, day);
GregorianCalendar
はい、毎回書かなければなりません。の代わりにCalendar
、と書くこともできますGregorianCalendar
。これも機能します。しかし、ただ書くだけならCalendar
もっと短くなります。
年は完全に記述する必要があります。たとえば、2019 の代わりに 19 を書くことはできません。月は依然として 0 から番号付けされます。ただし、以前と同様に、月の日付は 0 から数えられるわけではありません。オタクたち!
日付だけでなく時刻も設定するには、追加の引数として時刻を渡す必要があります。
... = new GregorianCalendar(year, month, day, hours, minutes, seconds);
必要に応じてミリ秒単位で渡すこともできます。これらは秒数の後のパラメータです。
3. 画面上にカレンダーオブジェクトを表示する
画面上のカレンダー オブジェクトを単に印刷するだけでは、満足のいく結果は得られません。
コード |
---|
|
コンソール出力 |
|
ここで留意すべき点は、カレンダーは日付ではなくカレンダーであるということです。カレンダーにはあらゆる種類の設定があり、それらはすべて画面に表示されます。
SimpleDateFormat
カレンダーを表示するにはオブジェクトを使用するのが適切ですが、それを研究するまでは、このライフハックを使用できます。
Date date = calendar.getTime();
オブジェクトCalendar
は簡単にオブジェクトに変換できDate
、Date
オブジェクトを表示する方法はすでに知っています。Calendar
次のようなコードを使用して、オブジェクトを に変換できますDate
。
メソッドの使用getTime()
:
コード | コンソール出力 |
---|---|
|
|
それは全く別の話ですよね。
4. 日付の要素の操作
日付の特定の要素 (年、月など) を取得するために、Calendar
クラスには メソッドがありますget()
。これは単一のメソッドですが、パラメーターがあります。
int month = calendar.get(Calendar.MONTH);
ここで、calendar
はCalendar
変数、 はクラスMONTH
の定数フィールドですCalendar
。
Calendar
クラスの定数フィールドの 1 つを引数としてメソッドに渡すget
と、結果として目的の値が得られます。
例
コード | 説明 |
---|---|
|
元号(西暦の前後) 年 月 日 曜日 時 分 秒 |
日付の要素を変更するには、set
次のメソッドを使用します。
calendar.set(Calendar.MONTH, value);
ここで、calendar
はCalendar
変数、 はクラスMONTH
の定数フィールドですCalendar
。
メソッドを操作するときは、クラスの定数フィールドの 1 つを最初の引数としてset
渡し、新しい値を 2 番目の引数として渡します。Calendar
例
コード | 説明 |
---|---|
|
年 = 2019 月 = 7 月 (0 から番号付け) 4 日 時 分 秒 |
5.Calendar
クラスの定数
クラスの定数フィールドは、Calendar
日付の要素に名前を付けるためのものに限定されません。あらゆる場面に応じたフィールドがあるようです。
Calendar date = new GregorianCalendar(2019, Calendar.JANUARY, 31);
たとえば、月を参照する定数フィールドがあります。
曜日も:
Calendar calendar = new GregorianCalendar(2019, Calendar.JANUARY, 31);
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY)
{
System.out.println("It's Friday");
}
すべてをリストするわけではありません。コード内でこのような定数を見つけても驚かないでください。
定数を使用するとコードが読みやすくなるため、プログラマは定数を使用します。また、読みやすさを向上させるために、月には 0 から番号が付けられます。か否か。
Calendar
6.オブジェクト内の日付を変更する
このCalendar
クラスには、よりインテリジェントな方法で日付を操作できるメソッドがあります。たとえば、日付に年、月、または数日を追加できます。あるいはそれらを奪い去ってください。このメソッドは と呼ばれますadd()
。これを使って作業すると次のようになります。
calendar.add(Calendar.MONTH, value);
ここで、calendar
はCalendar
変数、 はクラスMONTH
の定数フィールドですCalendar
。
メソッドを操作するときは、クラスの定数フィールドの 1 つを最初の引数としてadd
渡し、2 番目の引数として追加する新しい値を渡します。Calendar
これも賢い方法です。それがどれほど賢いのか見てみましょう:
コード |
---|
|
コンソール出力 |
|
このメソッドは、2019 年 2 月は 28 日しかないことを理解しているため、結果の日付は 3 月 1 日になります。
さあ、2か月を切りましょう!何を手に入れるべきでしょうか?2018年12月27日!今すぐ確認しましょう。
結果が以前の日付になる操作を実行するには、メソッドに負の値を渡す必要がありますadd()
。
コード |
---|
|
コンソール出力 |
|
できます!
この方法では、月の長さの違いや閏年も考慮されます。全体として、素晴らしい方法です。これはまさに、日付を扱うほとんどのプログラマーが必要とするものです。
7. 日付のローリング要素
しかし、場合によっては、この賢い動作が望ましくない場合もあります。たとえば、他のすべてを変更せずに日付の一部分に何かを加えたい場合などです。
このクラスには、これを行うためのCalendar
特別なroll()
メソッドがあります。その署名はメソッドとまったく同じですadd()
が、このメソッドは日付の 1 つの要素のみを変更し、残りは変更しません。
例:
コード |
---|
|
コンソール出力 |
|
月は変わりましたが、年と日付は変わりませんでした。
GO TO FULL VERSION