1.計算某一月份的最大天數
calendar time=calendar.getinstance();
time.clear();
time.set(calendar.year,year);
time.set(calendar.month,i-1);//注意,calendar物件預設一月為0
int day=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();
******dateformat df=new ******dateformat("yyyy-mm-dd hh:mm:ss");
system.out.println(df.format(date));
4.計算一年中的第幾星期
(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)計算一年中的第幾星期是幾號
******dateformat df=new ******dateformat("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()方法
******dateformat df=new ******dateformat("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.計算兩個任意時間中間的間隔天數
(1)傳進calendar物件
/** *//**計算兩個時間之間相隔天數
* @param startday 開始時間
* @param endday 結束時間
* @return
*/public int getintervaldays(calendar startday,calendar endday)...
//分別得到兩個時間的毫秒數
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)...
//分別得到兩個時間的毫秒數
long sl=startday.gettime();
long el=endday.gettime();
long ei=el-sl;
//根據毫秒數計算間隔天數
return (int)(ei/(1000*60*60*24));
}
同理,可以用相同的方法計算出任意兩個時間相隔的小時數,分鐘數,秒鐘數等
注:以上方法是完全按時間計算,有時並不能令人滿意,如:
startday="2006-10-11 20:00:00"
endday="2006-10-12 8:00:00"
計算結果為0,但是我們也許相讓計算結果變為1,此時可以用如下方法實現:
在傳參之前,先設定endday的時間,如:
endday.set(calendar.hour_of_day, 23);
endday.set(calendar.minute, 59);
endday.set(calendar.second, 59);
endday.set(calendar.millisecond, 59);
public
int getdaysbetween (calendar d1, calendar d2) ...
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) ... while (d1.get(calendar.year) != y2);
}
return days;
}
java中關於時間日期操作的常用函式
1.計算某一月份的最大天數calendar time calendar.getinstance time.clear time.set calendar.year,year time.set calendar.month,i 1 注意,calendar物件預設一月為0 int day time.ge...
java中關於時間日期操作的常用函式
1.計算某一月份的最大天數calendar time calendar.getinstance time.clear time.set calendar.year,year time.set calendar.month,i 1 注意,calendar物件預設一月為0 int day time.ge...
java中關於時間日期操作的常用函式
1.計算某一月份的最大天數 calendar time calendar.getinstance time.clear time.set calendar.year,year time.set calendar.month,i 1 注意,calendar物件預設一月為0 int day time.g...