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

2021-08-29 14:44:46 字數 3853 閱讀 5395

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