java 天数计算日期_Java 计算日期间天数与日期推算等操作

package com.yh.emmm.pattern;

import java.time.LocalDate;

/**

* 计算两个日期之间的天数

*

* @author 枫茗丿love

*/

public class CountDaysUtils {

/**

* 两个日期之间的天数

*

* @param start

* @param end

* @return

*/

public static int betweenDays(LocalDate start, LocalDate end) {

int sy = start.getYear();

int ey = end.getYear();

int days;

if (sy < ey) {

days = start.lengthOfYear() - start.getDayOfYear();

for (int i = sy + 1; i < ey; i++) {

days += LocalDate.of(i, 12, 31).lengthOfYear();

}

days += end.getDayOfYear();

} else if (sy == ey) {

days = end.getDayOfYear() - start.getDayOfYear();

} else {

days = end.lengthOfYear() - end.getDayOfYear();

for (int i = ey + 1; i < sy; i++) {

days += LocalDate.of(i, 12, 31).lengthOfYear();

}

days += start.getDayOfYear();

days = -days;

}

return days;

}

/**

* 推算日期(当前日期以前或以后多少天)

*

* @param date 初始日期

* @param days (-n~n)

* @return 目标日期

*/

public static LocalDate reckonDate(LocalDate date, Integer days) {

if (days >= 0)

return date.plusDays(days);

else

return date.minusDays(-days);

}

/**

* 判断是否闰年

*

* @param year

* @return

*/

public static boolean isLeapYear(int year) {

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

return true;

return false;

}

/**

* 统计目标日期到年底的天数

*

* @param date

* @return

*/

private static int remainMonth(LocalDate date) {

return monthDays(date, true);

}

/**

* 统计目标日期到年初的天数

*

* @param date

* @return

*/

private static int passMonth(LocalDate date) {

return monthDays(date, false);

}

private static int monthDays(LocalDate date, boolean i) {

if (i)

return date.lengthOfYear() - date.getDayOfYear();

return date.getDayOfYear();

}

}

转载至链接:https://my.oschina.net/u/3087202/blog/1928179

你可能感兴趣的:(java,天数计算日期)