JAVA计算两个日期之间相差的天数
来源:互联网 发布:进销存软件哪个好 编辑:程序博客网 时间:2024/05/16 14:41
- package chen.util.date;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- public class DayDate {
-
- public static void main(String[] args) {
- long date1 = getDateTime("20121230");
- long date2 = getDateTime("20141001");
- int day = dateInterval(date1, date2);
- System.out.println(day);
- }
-
-
-
-
-
-
-
-
- public static int dateInterval(long date1, long date2) {
- if(date2 > date1){
- date2 = date2 + date1;
- date1 = date2 - date1;
- date2 = date2 - date1;
- }
-
-
-
-
-
-
-
-
-
- Calendar calendar1 = Calendar.getInstance();
- calendar1.setTimeInMillis(date1);
-
- Calendar calendar2 = Calendar.getInstance();
- calendar2.setTimeInMillis(date2);
-
- int y1 = calendar1.get(Calendar.YEAR);
- int y2 = calendar2.get(Calendar.YEAR);
-
- int d1 = calendar1.get(Calendar.DAY_OF_YEAR);
- int d2 = calendar2.get(Calendar.DAY_OF_YEAR);
- int maxDays = 0;
- int day = 0;
- if(y1 - y2 > 0){
- day = numerical(maxDays, d1, d2, y1, y2, calendar2);
- }else{
- day = d1 - d2;
- }
- return day;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static int numerical(int maxDays, int d1, int d2, int y1, int y2, Calendar calendar){
- int day = d1 - d2;
- int betweenYears = y1 - y2;
- List<Integer> d366 = new ArrayList<Integer>();
-
- if(calendar.getActualMaximum(Calendar.DAY_OF_YEAR) == 366){
- System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
- day += 1;
- }
-
- for (int i = 0; i < betweenYears; i++) {
-
- calendar.set(Calendar.YEAR, (calendar.get(Calendar.YEAR)) + 1);
- maxDays = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
-
- if(maxDays != 366){
- day += maxDays;
- }else{
- d366.add(maxDays);
- }
-
- if(i == betweenYears-1 && betweenYears > 1 && maxDays == 366){
- day -= 1;
- }
- }
-
- for(int i = 0; i < d366.size(); i++){
-
- if(d366.size() >= 1){
- day += d366.get(i);
- }
-
-
-
- }
- return day;
- }
-
-
-
-
-
-
- public static long getDateTime(String strDate) {
- return getDateByFormat(strDate, "yyyyMMdd").getTime();
- }
-
-
-
-
-
-
- public static Date getDateByFormat(String strDate, String format) {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- try{
- return (sdf.parse(strDate));
- }catch (Exception e){
- return null;
- }
- }
- }