import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class DaysBetweenTwoDate {
public static boolean isLeapYear(int year){
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return true;
return false;
}
public static int getDayInYear(String date){
int result = 0;
int[] months = {31,28,31,30,31,30,31,31,30,31,30,31};
String[] nums = date.split("-");
int year = Integer.valueOf(nums[0]);
int month = Integer.valueOf(nums[1]);
int day = Integer.valueOf(nums[2]);
if(isLeapYear(year))
months[1] = 29;
for(int i = 0; i < month-1; i++)
result += months[i];
result += day;
return result;
}
public static int getDaysBetweenTwoDates(String date1, String date2){
int year1 = Integer.valueOf(date1.split("-")[0]);
int month1 = Integer.valueOf(date1.split("-")[1]);
int day1 = Integer.valueOf(date1.split("-")[2]);
int year2 = Integer.valueOf(date2.split("-")[0]);
int month2 = Integer.valueOf(date2.split("-")[1]);
int day2 = Integer.valueOf(date2.split("-")[2]);
if(year1 == year2){
return getDayInYear(date2) - getDayInYear(date1) + 1;
}
int beforeYear1Days = (isLeapYear(year1) ? 366 - getDayInYear(date1) : 365 - getDayInYear(date1));
int betweenTwoYearDays = 0;
for(int diffYear = year1 + 1; diffYear < year2; diffYear++)
betweenTwoYearDays += (isLeapYear(diffYear) ? 366 : 365);
int afterYear2Days = getDayInYear(date2);
return beforeYear1Days + betweenTwoYearDays + afterYear2Days;
}
public static void main(String[] args){
System.out.println(getDaysBetweenTwoDates("2014-6-6", "2016-7-28"));
System.out.println(ChronoUnit.DAYS.between(LocalDateTime.of(2014,6,6,12,12), LocalDateTime.of(2016,7,28,12,12)));
}
}
计算日期天数差值
最新推荐文章于 2024-02-01 15:08:54 发布