前言
究竟什么是一個 Calendar 呢?中文的翻譯就是日歷,那我們立刻可以想到我們生活中有陽(公)歷、陰(農)歷之分。它們的區別在哪呢?
比如有:
月份的定義 - 陽`(公)歷 一年12 個月,每個月的天數各不同;陰(農)歷,每個月固定28天
每周的第一天 - 陽(公)歷星期日是第一天;陰(農)歷,星期一是第一天
實際上,在歷史上有著許多種紀元的方法。它們的差異實在太大了,比如說一個人的生日是"八月八日" 那么一種可能是陽(公)歷的八月八日,但也可以是陰(農)歷的日期。所以為了計時的統一,必需指定一個日歷的選擇。那現在最為普及和通用的日歷就是 "Gregorian Calendar"。也就是我們在講述年份時常用 "公元幾幾年"。Calendar 抽象類定義了足夠的方法,讓我們能夠表述日歷的規則。Java 本身提供了對 "Gregorian Calendar" 規則的實現。我們從 Calendar.getInstance()
中所獲得的實例就是一個 "GreogrianCalendar" 對象(與您通過 new GregorianCalendar()
獲得的結果一致)。下面話不多說了,來看看本文的正文吧。
利用java中Calendar類計算出兩個日期之間的天數和周數的算法!
計算出日期之間的天數:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public Object countTwoDate(Object startDate, Object endDate) { if (StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)) { Date start=(Date)startDate; Date end = (Date)endDate; Calendar cal=Calendar.getInstance(); cal.setTime(start); long time1=cal.getTimeInMillis(); cal.setTime(end); long time2=cal.getTimeInMillis(); long between_days=(time2-time1)/( 1000 * 3600 * 24 ); return Integer.parseInt(String.valueOf(between_days)); } return null ; } |
再計算出周數:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public Object countTwoDayWeek(Object startDate, Object endDate) { if (StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)) { Date start=(Date)startDate; Date end = (Date)endDate; Calendar cal=Calendar.getInstance(); cal.setTime(start); long time1=cal.getTimeInMillis(); cal.setTime(end); long time2=cal.getTimeInMillis(); long between_days=(time2-time1)/( 1000 * 3600 * 24 ); Double days=Double.parseDouble(String.valueOf(between_days)); if ((days/ 7 )> 0 && (days/ 7 )<= 1 ){ //不滿一周的按一周算 return 1 ; } else if (days/ 7 > 1 ){ int day=days.intValue(); if (day% 7 > 0 ){ return day/ 7 + 1 ; } else { return day/ 7 ; } } else if ((days/ 7 )== 0 ){ return 0 ; } else { //負數返還null return null ; } } return null ; } |
總結
以上就是利用Java中的Calendar計算兩個日期之間天數和周數的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。