Javaにはいくつかの時間クラスがありますが、Dateが徐々に無効になるにつれて、メソッドには徐々にバツ印が付けられ、残りの使用可能な関数はすべてCalendarに実装されています、そしてCalendar のサブクラス GregorianCalendar は、特殊なカレンダーの研究に非常に詳しく、通常はこのサブクラスを使用しません。今後は Calendar クラスが主流になると考えられます。Calendar クラスの詳細を見てみましょう。間違いがあれば修正してください。
Calendar クラスは抽象クラスなのでインスタンス化できません。このクラスがカレンダー インスタンスを取得するには 2 つの方法があります:
Calendar calendar = Calendar.getInstance(TimeZone zone , Locale locale);
getInstance メソッドを呼び出して、デフォルトの Timezone と Locale プロパティを選択します。これにより、カレンダーを返すことができ、パラメータ Timezone または Locale を追加して地理的位置を選択することもできます。特定のパラメータについては、java.util.Timezone と java.util.Locale の 2 つのパッケージを参照してください。実際には、一般的なデフォルト時刻は public です。時間を変更する必要はありません。
さらに、インスタンス化できるメソッドがあります。驚くべきことではありません。古い Java ルーチンはインスタンス化にサブクラスを使用します。 Calendar のサブクラスは 1 つだけです。GregorianCalendar はグレゴリオ暦に変換されます。この GregorianCalendar については、後で別途説明します。 2 番目のインスタンス化の方法は次のとおりです。
Calendar calendar = new GregorianCalendar();
Calendar の変数は、基本的に、年、月、時間、午前、午後、で修飾されます。など オールタイム すべてのコンテンツが含まれます。 Baidu でそれらの多くを見つけました。これを使用したい場合は、API を参照するのが最善です。ここに簡単なコピーを貼り付けます:
calendar.get(Calendar.YEAR); calendar.get(Calendar.MONTH); // 月份从0开始 calendar.get(Calendar.DAY_OF_MONTH); calendar.get(Calendar.DAY_OF_WEEK); calendar.get(Calendar.WEEK_OF_YEAR); calendar.get(Calendar.WEEK_OF_MONTH); calendar.get(Calendar.HOUR); // 12小时calendar.get(Calendar.HOUR_OF_DAY); // 24小时 calendar.get(Calendar.MINUTE); calendar.get(Calendar.SECOND); calendar.get(Calendar.MILLISECOND);
これらの値はすべてソース コードの最終変数です。これらは int static 最終変更であるため、これらの変数はすべて int 型の初期値を持つことになります。実際、これらの変数には、一部の関数がパラメータを渡すときの範囲判断として、Calendar クラスで順番に番号が付けられます。この状況は、次のコードのように偶然に発生する可能性があります:
System.out.println(Calendar.DAY_OF_MOUTH);
今日は今月の 5 日ではないにもかかわらず、出力は 5 です。実際、これは間違いです。出力されるのは、このクラスの DAY_OF_MOUTH の初期値 5 です。現在の月の日付を表すには、クラス インスタンスをオブジェクトにエクスポートする必要があります。クラスの変数は直接クリックできます。このエラーは非常に一般的です。 get() メソッドを使用して正しいメソッドを取得する必要があります (カレンダーはインスタンスのオブジェクトです):
System.out.println(calendar.get(Calendar.DAY_OF_MOUTH));
compareTo (Calendar othercalendar)、int 値を返します、オブジェクトが時刻の後に 0 より大きい数値を返し、それ以外の場合は 0 より小さい数値を返します。特に、時刻が同じ場合は 0 が返されると思います。違いを生むためにミリ秒数を直接返す場合もありますが (意味があると推測しているような気がします...)、ミリ秒単位の差が戻り値として使用されます。
after (Calendar othercalendar)、before (Calendar othercalendar) も簡単に推測できます。 after() 関数は時刻がパラメーターより後の場合は正の値を返し、before() は正の値を返します。関数はパラメータの前の時間を返します。
Calendar calendar = Calendar.getInstance(); Calendar calendarother = Calendar.getInstance(); calendarother.add(Calendar.DATE, -20); if(calendar.after(calendarother)) System.out.println("after");calendarother.add(Calendar.DATE, 100);if(calendar.before(calendarother)) System.out.println("before");if(calendar.compareTo(calendarother)>0) System.out.println(calendar.getTime()+">"+calendarother.getTime());
出力結果は次のとおりです:
after before Sun Jan 11 21:19:49 GMT+08:00 1970>Thu Jan 01 00:00:00 GMT+08:00 1970
上記の例では、関数 add(int field, int amount) が表示されます。 、この関数は比較的強力で、最初のパラメーターの値を加算または減算して、このカレンダー エンティティ内の対応する項目の値を変更できます。
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); System.out.println(calendar.getTime()); //输出的日期是当前日期的前一天,其他所有的都不变
get(int field) については何も言うことはなく、取得したい値を入れて表示するだけです。 ちなみに、getTimeInMillis() は実際のアプリケーションではこのミリ秒数を返します。ミリ秒はよく使われます。
set() メソッドにはパラメータを入力するためのさまざまな方法があり、これは書面で理解できます。 setTime() 関数は Date オブジェクトをそれに入れ、Date に従って設定されたカレンダーを返します。もう 1 つの特別な点は、月が 0 から始まることです。月を 0 に設定すると実際には 1 月を意味し、1 に設定すると実際には 2 月を意味します。週の最初の日は日曜日、7 日目は土曜日です。
calendar.get(Calendar.DATE); calendar.getTimeInMillis(); calendar.set(field, value); calendar.set(year, month, date); //月份是从0开始,下同 calendar.set(year, month, date, hourOfDay, minute); calendar.set(year, month, date, hourOfDay, minute, second); calendar.setTime(Date date); //Date对象
getTime() 関数はおそらくこの形式で時刻を返します
Sun Jan 11 21:19:49 GMT+08:00 1970
時刻の書式設定方法を使用して、好みに変更できます。詳細については、この関数には多くの欠点がありません。 clear() 関数は、パラメーターなしでオブジェクト内のすべての変数をクリアします。クリアされた時刻は直接元の形式に戻され、
Thu Jan 01 00:00:00 GMT+08:00 1970
clear() になります。また、パラメーター int フィールドも追加されます。これは、この値のみがクリアされることを意味します:
calendar.clear(Calendar.YEAR);System.out.println(calendar.getTime());
上述代码最后显示的年份是1970年(不可能清除成0000年…),其他的也可以以此类推。
isSet()方法确定日历字段是否已经设置了一个值,有些值会因为get方法触发计算而被设置,很多的时候,只要进行了初始化,很多值已经被设置了,但是作为一个boolean返回值的函数,检测的时候我们相信还是会起到作用的。
if(calendar.isSet(Calendar.DATE))
Calendar类正如其名,可以实现一个日历,对其进行操作且功能较为完整。如果你只是需要一个时间,这个类并不一定比new Date()能快多少,但是对于一些细节的操作,还是有很多值得我们学习的地方。
以上就是java时间----java.util.Calendar的详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!