Java日付アクション関数
4306 ワード
1.ある月の最大日数を計算する
注意:setメソッドを使用する前に、まずclearをクリックする必要があります.そうしないと、多くの情報がシステムの現在の時間2.CalendarとDateからの変換を継承します(1)CalendarがDateに変換されます.
(2)DateをCalendarに変換
3.出力日時のフォーマット
4.1年の曜日を計算(1)ある日が1年の曜日であることを計算
(2)計算一年の何週目が何日目か
出力:2006-01-02
5.add()とroll()の使い方(1)add()の方法
出力: 2006-08-30 2006-09-03(2)rollメソッド
出力: 2006-09-29 2006-09-03に分かるように、roll()方法は今月中に循環し、一般的にadd()方法を使用する.
6.2つの任意の時間の間の間隔日数(1)を計算してCalendarオブジェクトに伝達する
(2)Dateオブジェクトへ転送
同じように、同じ方法で任意の2つの時間間隔の時間数、分数、秒数などを計算できます.注:以上の方法は完全に時間で計算されており、startday=「2006-10-11 20:00」endday=「2006-10-12 8:00:00」の計算結果が0になる場合がありますが、計算結果を1にすることはできません.この場合、以下のような方法で実現することができる.
このようにstartday,enddayに伝えると,結果は私たちの望み通りになった.ただし、上記の方法が面倒な場合は、以下の方法を参考にしてください.
(3)間隔日数の正確な計算方法の改善
Calendar time = Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);// ,Calendar 0
intday = time.getActualMaximum(Calendar.DAY_OF_MONTH);//
注意:setメソッドを使用する前に、まずclearをクリックする必要があります.そうしないと、多くの情報がシステムの現在の時間2.CalendarとDateからの変換を継承します(1)CalendarがDateに変換されます.
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
(2)DateをCalendarに変換
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
3.出力日時のフォーマット
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddhh:mm:ss");
System.out.println(df.format(date));
4.1年の曜日を計算(1)ある日が1年の曜日であることを計算
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno = cal.get(Calendar.WEEK_OF_YEAR);
(2)計算一年の何週目が何日目か
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
出力:2006-01-02
5.add()とroll()の使い方(1)add()の方法
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date = cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));
出力: 2006-08-30 2006-09-03(2)rollメソッド
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date = cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));
出力: 2006-09-29 2006-09-03に分かるように、roll()方法は今月中に循環し、一般的にadd()方法を使用する.
6.2つの任意の時間の間の間隔日数(1)を計算してCalendarオブジェクトに伝達する
/**
* @param startday
* @param endday
* @return
*/
public int getIntervalDays(Calendar startday,Calendar endday){
// startday endday
if(startday.after(endday)){
Calendar cal=startday;
startday=endday;
endday=cal;
}
//
long sl=startday.getTimeInMillis();
long el=endday.getTimeInMillis();
long ei=el-sl;
//
return (int)(ei/(1000*60*60*24));
}
(2)Dateオブジェクトへ転送
/**
* @param startday
* @param endday
* @return
*/
public int getIntervalDays(Date startday,Date endday){
// startday endday
if(startday.after(endday)){
Date cal = startday;
startday = endday;
endday = cal;
}
//
long sl = startday.getTime();
long el = endday.getTime();
long ei=el-sl;
//
return (int)(ei/(1000*60*60*24));
}
同じように、同じ方法で任意の2つの時間間隔の時間数、分数、秒数などを計算できます.注:以上の方法は完全に時間で計算されており、startday=「2006-10-11 20:00」endday=「2006-10-12 8:00:00」の計算結果が0になる場合がありますが、計算結果を1にすることはできません.この場合、以下のような方法で実現することができる.
endday.set(Calendar.HOUR_OF_DAY, 23);
endday.set(Calendar.MINUTE, 59);
endday.set(Calendar.SECOND, 59);
endday.set(Calendar.MILLISECOND, 59);
このようにstartday,enddayに伝えると,結果は私たちの望み通りになった.ただし、上記の方法が面倒な場合は、以下の方法を参考にしてください.
(3)間隔日数の正確な計算方法の改善
public int getDaysBetween (Calendar d1, Calendar d2){
if (d1.after(d2)){ // swap dates so that d1 is start and d2 is end
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
int y2 = d2.get(Calendar.YEAR);
if (d1.get(Calendar.YEAR) != y2){
d1 = (Calendar) d1.clone();
do{
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//
d1.add(Calendar.YEAR, 1);
} while (d1.get(Calendar.YEAR) != y2);
}
return days;
}