利用Java中Calendar計(jì)算兩個(gè)日期之間的天數(shù)和周數(shù)
前言
究竟什么是一個(gè) Calendar 呢?中文的翻譯就是日歷,那我們立刻可以想到我們生活中有陽(公)歷、陰(農(nóng))歷之分。它們的區(qū)別在哪呢?
比如有:
月份的定義 - 陽`(公)歷 一年12 個(gè)月,每個(gè)月的天數(shù)各不同;陰(農(nóng))歷,每個(gè)月固定28天
每周的第一天 - 陽(公)歷星期日是第一天;陰(農(nóng))歷,星期一是第一天
實(shí)際上,在歷史上有著許多種紀(jì)元的方法。它們的差異實(shí)在太大了,比如說一個(gè)人的生日是"八月八日" 那么一種可能是陽(公)歷的八月八日,但也可以是陰(農(nóng))歷的日期。所以為了計(jì)時(shí)的統(tǒng)一,必需指定一個(gè)日歷的選擇。那現(xiàn)在最為普及和通用的日歷就是 "Gregorian Calendar"。也就是我們在講述年份時(shí)常用 "公元幾幾年"。Calendar 抽象類定義了足夠的方法,讓我們能夠表述日歷的規(guī)則。Java 本身提供了對 "Gregorian Calendar" 規(guī)則的實(shí)現(xiàn)。我們從 Calendar.getInstance() 中所獲得的實(shí)例就是一個(gè) "GreogrianCalendar" 對象(與您通過 new GregorianCalendar() 獲得的結(jié)果一致)。下面話不多說了,來看看本文的正文吧。
利用java中Calendar類計(jì)算出兩個(gè)日期之間的天數(shù)和周數(shù)的算法!
計(jì)算出日期之間的天數(shù):
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;
}
再計(jì)算出周數(shù):
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{
//負(fù)數(shù)返還null
return null;
}
}
return null;
}
總結(jié)
以上就是利用Java中的Calendar計(jì)算兩個(gè)日期之間天數(shù)和周數(shù)的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- java?Date獲取本月的開始時(shí)間與結(jié)束時(shí)間
- java獲取指定開始時(shí)間與結(jié)束時(shí)間之間的所有日期
- java根據(jù)開始時(shí)間結(jié)束時(shí)間計(jì)算中間間隔日期的實(shí)例代碼
- Java計(jì)算兩個(gè)日期時(shí)間之間的天數(shù)最簡方法
- Java編程實(shí)現(xiàn)計(jì)算兩個(gè)日期的月份差實(shí)例代碼
- java計(jì)算兩個(gè)日期之前的天數(shù)實(shí)例(排除節(jié)假日和周末)
- Java簡單計(jì)算兩個(gè)日期月數(shù)差的方法
- java計(jì)算兩個(gè)日期中間的時(shí)間
- JAVA計(jì)算兩個(gè)日期相差的實(shí)例
- Java根據(jù)開始時(shí)間和結(jié)束時(shí)間及周幾計(jì)算日期的示例代碼
相關(guān)文章
應(yīng)用市場中Java攔截器和切面的使用實(shí)例詳解
這篇文章主要介紹了應(yīng)用市場中Java攔截器和切面的使用實(shí)例詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Java 泛型 Generic機(jī)制實(shí)例詳解
這篇文章主要為大家介紹了Java 泛型 Generic機(jī)制實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Mybatis應(yīng)用mysql存儲過程查詢數(shù)據(jù)實(shí)例
下面小編就為大家分享一篇Mybatis應(yīng)用mysql存儲過程查詢數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

