JAvaのカレンダクラス(Calendar)の詳細
14690 ワード
正直に言うと、時間の処理については、私はほとんどCalendarカレンダー類で解決しています.今整理して、後で開発して調べるのに便利です.
java.util
クラスCalendar
java.lang.Object継承者java.util.Calendar
実装されたすべてのインタフェース:Serializable,Cloneable,Comparable
直接既知サブクラス:GregorianCalendar
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable
1.Calendarクラス
まず、まず、Calendarのインスタンス:
Calendarクラスのメンバー変数:
ここで以下でいうget,setメソッドとはinstanceのget,setメソッドを指す.
**Calendarクラスのメソッド:**
1.1まず、Calendarメンバー変数の中で、get、setの変数との具体的な意味を説明します.これらの変数はよく使われるからです.
1.1.1 YEARこのフィールドの意味は年であり、現在が2017-1-1であるとすれば、実行:
1.1.2 MONTHこのフィールドの意味は月です.現在は2017-9-1だとしたら、実行:
1.1.3 WEEK_OF_YEARとは、現在の年の総週数のうち、現在の日付が何週目であるかを指します
印刷結果は次のとおりです.
1.1.4 DATE現在時刻は何番ですか.例えば、今日は2017-3-20です.では、
1.1.5 DAY_OF_MONTHの今月の総日数の中で現在何日が過ぎていますか(実はその値は上のDATEの値と同じです)
印刷結果:
1.1.6 DAY_OF_YEARのその年のすべての日数の中で、当日何日過ぎました
印刷結果:
1.1.7 DAY_OF_WEEKは週7日間のうち、現在時刻は曜日(1-7)で、注目すべきは週の始まりが日曜日、終わりが土曜日、今日が月曜日なら
1.1.8 DAY_OF_WEEK_IN_MONTHとは、現在の期間が現在の月の数週目であり、1ヶ月の1日が第1週目、8日が第2週目である
1.1.9 WEEK_OF_MONTHは同じ現在の月の曜日ですが、その値は1.1.8のDAY_とは異なります.OF_WEEK_IN_MONTHは、現在の週の基準が異なります.例えば、今月の1日が水曜日で、最初の週であれば、5日の日曜日になると2週目になります.8のDAY_を押すとOF_WEEK_IN_MONTHの計算は5日が最初の週です
印刷結果は次のとおりです.
計算されたのは4.4週間で、5週間と表示されています.
1.2.0 AM_PMは、現在時刻がAMであるかPMであるかを判断するために用いる、AM値が0であればPMが1である.
1.2.1 HOUR現在時刻を表示する12時間制
1.2.2 HOUR_OF_DAY現在時刻を表示する24時間制
1.2.3 MINUTE現在時刻を表示する分数1.2.4 SECOND現在時刻を表示する秒数1.2.5 MILLISECOND現在時刻を表示するミリ秒数
1.2 get,setメソッドと値を取得しないメンバー変数(直接使用)もいくつかあります.
1.2.0週次メンバー変数SUNDAY-SATRADYの値は1-7 1.2.1月メンバー変数JANUARY-DECEEMBER(0-12)
2.GregorianCalendarクラス
GregorianCalendarクラスには、親クラスの様々な豊富な属性と方法のほかに、使いやすい方法があります.
構築方法:
実はその親Calendarにはこのような機能があります
その方法は役に立ちます.
3.時間処理の簡単な使用
日付の各属性を個別に取得
印刷:
再プレゼンテーション:
たとえばmysqlデータベースからdateタイプの日付(yyyyy-MM-dd)を取り出した場合、時刻のミリ秒を0に設定することに注意してください.
現在のシステム時間とデータベース内のdateで日付を比較する場合、ある日付が現在の日付より前または後である場合はafterまたはbeforeメソッドでbooleanタイプを返すことができますが、この2つの日付が等しいかどうかを比較するには、現在のシステム時間、分、秒、ミリ秒、いずれも0に設定することに注意する必要があります.比較に成功するか、intタイプを返すcompareToメソッドを使用するか、戻り値はそれぞれ-1,1,0で、ある日付より前、後、等しい.
java.util
クラスCalendar
java.lang.Object継承者java.util.Calendar
実装されたすべてのインタフェース:Serializable,Cloneable,Comparable
直接既知サブクラス:GregorianCalendar
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable
1.Calendarクラス
まず、まず、Calendarのインスタンス:
Calendar instance Calendar.getInstance();
を作成する.ここで返される特定のクラスタイプは、CalendarのサブクラスGregorianCalendarのオブジェクトであるため、使用時に直接new GregorianCalendar()を以下のプレゼンテーションでは、いずれもinstanceをCalendarのインスタンスとして使用することもできる.Calendarクラスのメンバー変数:
ここで以下でいうget,setメソッドとはinstanceのget,setメソッドを指す.
static int ALL_STYLES
getDisplayNames , "January" "Jan"。
static int AM
AM_PM 。
static int AM_PM
get set , HOUR 。
static int APRIL
MONTH 。
protected boolean areFieldsSet
fields[] , true。
static int AUGUST
MONTH 。
static int DATE
get set , 。
static int DAY_OF_MONTH
get set , 。
static int DAY_OF_WEEK
get set , 。
static int DAY_OF_WEEK_IN_MONTH
get set , 。
static int DAY_OF_YEAR
get set , 。
static int DECEMBER
MONTH 。
static int DST_OFFSET
get set , 。
static int ERA
get set , AD BC。
static int FEBRUARY
MONTH 。
static int FIELD_COUNT
get set 。
protected int[] fields
。
static int FRIDAY
Friday DAY_OF_WEEK 。
static int HOUR
get set , 。
static int HOUR_OF_DAY
get set , 。
protected boolean[] isSet
。
protected boolean isTimeSet
time , true。
static int JANUARY
MONTH 。
static int JULY
MONTH 。
static int JUNE
MONTH 。
static int LONG
getDisplayName getDisplayNames , "January"。
static int MARCH
MONTH 。
static int MAY
MONTH 。
static int MILLISECOND
get set , 。
static int MINUTE
get set , 。
static int MONDAY
Monday DAY_OF_WEEK 。
static int MONTH
get set 。" , 0 "
static int NOVEMBER
MONTH 。
static int OCTOBER
MONTH 。
static int PM
AM_PM 。
static int SATURDAY
Saturday DAY_OF_WEEK 。
static int SECOND
get set , 。
static int SEPTEMBER
MONTH 。
static int SHORT
getDisplayName getDisplayNames , "Jan"。
static int SUNDAY
Sunday DAY_OF_WEEK 。
static int THURSDAY
Thursday DAY_OF_WEEK 。
protected long time
, , 1970 1 1 0:00:00 。
static int TUESDAY
Tuesday DAY_OF_WEEK 。
static int UNDECIMBER
MONTH 。
static int WEDNESDAY
Wednesday DAY_OF_WEEK 。
static int WEEK_OF_MONTH
get set , 。
static int WEEK_OF_YEAR
get set , 。
static int YEAR
get set 。
static int ZONE_OFFSET
get set , GMT 。
**Calendarクラスのメソッド:**
abstract void add(int field, int amount)
, 。
boolean after(Object when)
Calendar Object , 。
boolean before(Object when)
Calendar Object , 。
void clear()
Calendar ( ) 。
void clear(int field)
Calendar ( ) 。
Object clone()
。
int compareTo(Calendar anotherCalendar)
Calendar ( )。" , -1,0,1;-1 Calendar anotherCalendar ,0 ,1 anotherCalendar "
boolean equals(Object obj)
Calendar Object 。
int get(int field)
。
int getActualMaximum(int field)
Calendar , 。
int getActualMinimum(int field)
Calendar , 。
static Locale[] getAvailableLocales()
, getInstance 。
String getDisplayName(int field, int style, Locale locale)
style locale field 。
Map getDisplayNames(int field, int style, Locale locale)
style locale field Map 。
int getFirstDayOfWeek()
; , , SUNDAY, , MONDAY。
abstract int getGreatestMinimum(int field)
Calendar 。
static Calendar getInstance()
。
static Calendar getInstance(Locale aLocale)
。
static Calendar getInstance(TimeZone zone)
。
static Calendar getInstance(TimeZone zone, Locale aLocale)
。
abstract int getLeastMaximum(int field)
Calendar 。
abstract int getMaximum(int field)
Calendar 。
int getMinimalDaysInFirstWeek()
, , , 1。
abstract int getMinimum(int field)
Calendar 。
Date getTime()
Calendar ( ) Date 。
long getTimeInMillis()
Calendar , 。
TimeZone getTimeZone()
。
int hashCode()
。
boolean isLenient()
/ 。
boolean isSet(int field)
, get 。
abstract void roll(int field, boolean up)
( / ) , 。
void roll(int field, int amount)
( ) , 。
void set(int field, int value)
。
void set(int year, int month, int date)
YEAR、MONTH DAY_OF_MONTH 。
void set(int year, int month, int date, int hourOfDay, int minute)
YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY MINUTE 。
void set(int year, int month, int date, int hourOfDay, int minute, int second)
YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE SECOND 。
void setFirstDayOfWeek(int value)
; , , SUNDAY, , MONDAY。
void setLenient(boolean lenient)
/ 。
void setMinimalDaysInFirstWeek(int value)
, , , 1 。
void setTime(Date date)
Date Calendar 。
void setTimeInMillis(long millis)
long Calendar 。
void setTimeZone(TimeZone value)
。
String toString()
。
1.1まず、Calendarメンバー変数の中で、get、setの変数との具体的な意味を説明します.これらの変数はよく使われるからです.
1.1.1 YEARこのフィールドの意味は年であり、現在が2017-1-1であるとすれば、実行:
System.out.println(instance.get(Calendar.YEAR));
印刷された値は2017
である1.1.2 MONTHこのフィールドの意味は月です.現在は2017-9-1だとしたら、実行:
System.out.println(instance.get(Calendar.MONTH));
印刷された値は8
です.CalendarではMONTHの開始月が0であることに注意してください.1.1.3 WEEK_OF_YEARとは、現在の年の総週数のうち、現在の日付が何週目であるかを指します
System.out.println("WEEK_OF_YEAR:"+instance.get(Calendar.WEEK_OF_YEAR));
System.out.println(" "+instance.getActualMaximum(Calendar.WEEK_OF_YEAR)+" ");
印刷結果は次のとおりです.
WEEK_OF_YEAR:12
52
1.1.4 DATE現在時刻は何番ですか.例えば、今日は2017-3-20です.では、
System.out.println(instance.get(Calendar.DATE));
印刷の値は20
です.1.1.5 DAY_OF_MONTHの今月の総日数の中で現在何日が過ぎていますか(実はその値は上のDATEの値と同じです)
System.out.println("DAY_OF_MONTH:"+instance.get(Calendar.DAY_OF_MONTH));
System.out.println(" "+instance.getActualMaximum(Calendar.DAY_OF_MONTH)+" ");
印刷結果:
DAY_OF_MONTH:20
31
1.1.6 DAY_OF_YEARのその年のすべての日数の中で、当日何日過ぎました
System.out.println("DAY_OF_YEAR:"+instance.get(Calendar.DAY_OF_YEAR));
System.out.println(" "+instance.getActualMaximum(Calendar.DAY_OF_YEAR)+" ");
印刷結果:
DAY_OF_YEAR:79
365
1.1.7 DAY_OF_WEEKは週7日間のうち、現在時刻は曜日(1-7)で、注目すべきは週の始まりが日曜日、終わりが土曜日、今日が月曜日なら
instance.get(Calendar.DAY_OF_WEEK)
の値は21.1.8 DAY_OF_WEEK_IN_MONTHとは、現在の期間が現在の月の数週目であり、1ヶ月の1日が第1週目、8日が第2週目である
1.1.9 WEEK_OF_MONTHは同じ現在の月の曜日ですが、その値は1.1.8のDAY_とは異なります.OF_WEEK_IN_MONTHは、現在の週の基準が異なります.例えば、今月の1日が水曜日で、最初の週であれば、5日の日曜日になると2週目になります.8のDAY_を押すとOF_WEEK_IN_MONTHの計算は5日が最初の週です
System.out.println("WEEK_OF_MONTH:"+instance.get(Calendar.WEEK_OF_MONTH));
System.out.println(" "+instance.getActualMaximum(Calendar.WEEK_OF_MONTH)+" ");
印刷結果は次のとおりです.
WEEK_OF_MONTH:4
5
計算されたのは4.4週間で、5週間と表示されています.
1.2.0 AM_PMは、現在時刻がAMであるかPMであるかを判断するために用いる、AM値が0であればPMが1である.
1.2.1 HOUR現在時刻を表示する12時間制
1.2.2 HOUR_OF_DAY現在時刻を表示する24時間制
1.2.3 MINUTE現在時刻を表示する分数1.2.4 SECOND現在時刻を表示する秒数1.2.5 MILLISECOND現在時刻を表示するミリ秒数
1.2 get,setメソッドと値を取得しないメンバー変数(直接使用)もいくつかあります.
1.2.0週次メンバー変数SUNDAY-SATRADYの値は1-7 1.2.1月メンバー変数JANUARY-DECEEMBER(0-12)
2.GregorianCalendarクラス
GregorianCalendarクラスには、親クラスの様々な豊富な属性と方法のほかに、使いやすい方法があります.
構築方法:
GregorianCalendar()
Constructs a new GregorianCalendar initialized to the current date and time with the default Locale and TimeZone.
GregorianCalendar(int year, int month, int day)
Constructs a new GregorianCalendar initialized to midnight in the default TimeZone and Locale on the specified date.
GregorianCalendar(int year, int month, int day, int hour, int minute)
Constructs a new GregorianCalendar initialized to the specified date and time in the default TimeZone and Locale.
GregorianCalendar(int year, int month, int day, int hour, int minute, int second)
Constructs a new GregorianCalendar initialized to the specified date and time in the default TimeZone and Locale.
GregorianCalendar(Locale locale)
Constructs a new GregorianCalendar initialized to the current date and time and using the specified Locale and the default TimeZone.
GregorianCalendar(TimeZone timezone)
Constructs a new GregorianCalendar initialized to the current date and time and using the specified TimeZone and the default Locale.
GregorianCalendar(TimeZone timezone, Locale locale)
Constructs a new GregorianCalendar initialized to the current date and time and using the specified TimeZone and Locale.
実はその親Calendarにはこのような機能があります
その方法は役に立ちます.
boolean isLeapYear(int year)
年が閏年かどうかを判断します.3.時間処理の簡単な使用
日付の各属性を個別に取得
Calendar instance = Calendar.getInstance();
System.out.println(instance.get(Calendar.YEAR)+" ");
System.out.println((instance.get(Calendar.MONTH)+1)+" ");
System.out.println(instance.get(Calendar.DATE)+" ");
System.out.println(instance.get(Calendar.HOUR_OF_DAY)+" "); //24
switch (instance.get(Calendar.AM_PM)) {
case Calendar.AM:
System.out.println(" ");
break;
case Calendar.PM:
System.out.println(" ");
break;
}
System.out.println(instance.get(Calendar.MINUTE)+" ");
System.out.println(instance.get(Calendar.SECOND)+" ");
System.out.println(instance.get(Calendar.MILLISECOND)+" ");
印刷:
2017
3
21
10
7
35
951
再プレゼンテーション:
Calendar instance = Calendar.getInstance();
long currentTime = instance.getTimeInMillis();//
instance.add(Calendar.DAY_OF_YEAR, 1); //
long tomorrowTime = instance.getTimeInMillis();
System.out.println(" "+(tomorrowTime-currentTime)/(1000*60*60*24)+" ");
1
たとえばmysqlデータベースからdateタイプの日付(yyyyy-MM-dd)を取り出した場合、時刻のミリ秒を0に設定することに注意してください.
現在のシステム時間とデータベース内のdateで日付を比較する場合、ある日付が現在の日付より前または後である場合はafterまたはbeforeメソッドでbooleanタイプを返すことができますが、この2つの日付が等しいかどうかを比較するには、現在のシステム時間、分、秒、ミリ秒、いずれも0に設定することに注意する必要があります.比較に成功するか、intタイプを返すcompareToメソッドを使用するか、戻り値はそれぞれ-1,1,0で、ある日付より前、後、等しい.
instance.set(Calendar.HOUR_OF_DAY, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.SECOND, 0);
instance.set(Calendar.MILLISECOND, 0);