Java 時間 -- java.util.Calendar の詳細な紹介

黄舟
リリース: 2017-03-01 13:22:32
オリジナル
1652 人が閲覧しました

java.util.Calendar

Javaにはいくつかの時間クラスがありますが、Dateが徐々に無効になるにつれて、メソッドには徐々にバツ印が付けられ、残りの使用可能な関数はすべてCalendarに実装されています、そしてCalendar のサブクラス GregorianCalendar は、特殊なカレンダーの研究に非常に詳しく、通常はこのサブクラスを使用しません。今後は Calendar クラスが主流になると考えられます。Calendar クラスの詳細を見てみましょう。間違いがあれば修正してください。

(1) インスタンス化

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();
ログイン後にコピー


(2) クラス変数

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));
ログイン後にコピー

(3) CompareTo() after() before() 関数

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
ログイン後にコピー


(4) get() add() set() setTime() function

上記の例では、関数 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对象
ログイン後にコピー

(5) getTime() clear() isSet() 関数

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)!


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!