输出内容概览
image.png
测试代码
public class HolidayTest {
private static String SOUT_DATE_FORMAT = "日期:%s\t年:%d\t月:%d\t日:%d\t天数:%d\t周数:%d\t周末:%s";
@Test
public void test() {
String dateFormat = "yyyy-MM-dd";
LocalDate localDateStart = Jdk8DateFormatter.strToLocalDate("2020-01-01", dateFormat);
LocalDate localDateEnd = Jdk8DateFormatter.strToLocalDate("2020-12-31", dateFormat);
int diff = localDateEnd.getDayOfYear() - localDateStart.getDayOfYear();
int weekOfYear = 1;
DayOfWeek dayOfWeek = localDateStart.getDayOfWeek();
String isWeekend = dayOfWeek.ordinal() > 4 ? "是" : "";
System.out.println(String.format(SOUT_DATE_FORMAT, localDateStart.format(DateTimeFormatter.ofPattern(dateFormat)),
localDateStart.getYear(), localDateStart.getMonthValue(), localDateStart.getDayOfMonth(), localDateStart.getDayOfYear(),
weekOfYear, isWeekend));
LocalDate temp = localDateStart;
for (int i = 0; i < diff; i++) {
temp = temp.plusDays(1);
dayOfWeek = temp.getDayOfWeek();
isWeekend = dayOfWeek.ordinal() > 4 ? "是" : "";
if (dayOfWeek.ordinal() == 6) {
weekOfYear++;
}
System.out.println(String.format(SOUT_DATE_FORMAT, temp.format(DateTimeFormatter.ofPattern(dateFormat)),
temp.getYear(), temp.getMonthValue(), temp.getDayOfMonth(), temp.getDayOfYear(),
weekOfYear, isWeekend));
}
}
}
JDK8日期格式化工具
/**
* 参考jdk8 doc https://docs.oracle.com/javase/tutorial/datetime/iso/period.html
* stackoverflow https://stackoverflow.com/questions/25776787/java-simpledateformat-format-issue-with-yyyy/25777559#25777559
*
* @version 0.1
* @auth amzing.
* @time 2018/8/25 12:25
* @since 0.1
*/
public class Jdk8DateFormatter {
public static String NORMAL_FORMATTER = "yyyy-MM-dd HH:mm:ss";
/**
* 标准 yyyy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static String dateFormatter(Date date){
return dateFormatter(date,NORMAL_FORMATTER);
}
public static String dateFormatter(Date date,String formatter){
return dateToLocalDateTime(date).format(DateTimeFormatter.ofPattern(formatter));
}
/**
* LocalDate