java中關於時間日期操作的常用函式

2021-08-29 15:37:00 字數 3737 閱讀 3395

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

(3)改進精確計算相隔天數的方法

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.g...

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...