java8 时间工具类

简介: java8 时间工具类
packagecom.drew.util;
importjava.time.DayOfWeek;
importjava.time.LocalDate;
importjava.time.LocalDateTime;
importjava.time.LocalTime;
importjava.time.MonthDay;
importjava.time.Period;
importjava.time.format.DateTimeFormatter;
importjava.time.format.FormatStyle;
importjava.time.temporal.ChronoUnit;
importjava.time.temporal.TemporalAdjusters;
importjava.util.List;
importcom.google.common.collect.Lists;
/*** * java1.8 的新特性,解决SimpleDateFormat的线程问题<br>* <li>Instant代替 Date,</li>* <li>LocalDateTime代替 Calendar,</li>* <li>DateTimeFormatter 代替 SimpleDateFormat.</li> 注意:如果是共享变量,则可能会出现线程问题。<br>* * @author zero 2019/03/30*/publicclassDateUtil8 {
// 时间元素privatestaticfinalStringYEAR="year";
privatestaticfinalStringMONTH="month";
privatestaticfinalStringWEEK="week";
privatestaticfinalStringDAY="day";
privatestaticfinalStringHOUR="hour";
privatestaticfinalStringMINUTE="minute";
privatestaticfinalStringSECOND="second";
// 星期元素privatestaticfinalStringMONDAY="MONDAY";// 星期一privatestaticfinalStringTUESDAY="TUESDAY";// 星期二privatestaticfinalStringWEDNESDAY="WEDNESDAY";// 星期三privatestaticfinalStringTHURSDAY="THURSDAY";// 星期四privatestaticfinalStringFRIDAY="FRIDAY";// 星期五privatestaticfinalStringSATURDAY="SATURDAY";// 星期六privatestaticfinalStringSUNDAY="SUNDAY";// 星期日// 根据指定格式显示日期和时间/** yyyy-MM-dd */privatestaticfinalDateTimeFormatteryyyyMMdd_EN=DateTimeFormatter.ofPattern("yyyy-MM-dd");
/** yyyy-MM-dd HH */privatestaticfinalDateTimeFormatteryyyyMMddHH_EN=DateTimeFormatter.ofPattern("yyyy-MM-dd HH");
/** yyyy-MM-dd HH:mm */privatestaticfinalDateTimeFormatteryyyyMMddHHmm_EN=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
/** yyyy-MM-dd HH:mm:ss */privatestaticfinalDateTimeFormatteryyyyMMddHHmmss_EN=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/** HH:mm:ss */privatestaticfinalDateTimeFormatterHHmmss_EN=DateTimeFormatter.ofPattern("HH:mm:ss");
/** yyyy年MM月dd日 */privatestaticfinalDateTimeFormatteryyyyMMdd_CN=DateTimeFormatter.ofPattern("yyyy年MM月dd日");
/** yyyy年MM月dd日HH时 */privatestaticfinalDateTimeFormatteryyyyMMddHH_CN=DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时");
/** yyyy年MM月dd日HH时mm分 */privatestaticfinalDateTimeFormatteryyyyMMddHHmm_CN=DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分");
/** yyyy年MM月dd日HH时mm分ss秒 */privatestaticfinalDateTimeFormatteryyyyMMddHHmmss_CN=DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分ss秒");
/** HH时mm分ss秒 */privatestaticfinalDateTimeFormatterHHmmss_CN=DateTimeFormatter.ofPattern("HH时mm分ss秒");
// 本地时间显示格式:区分中文和外文显示privatestaticfinalDateTimeFormattershotDate=DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
privatestaticfinalDateTimeFormatterfullDate=DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
privatestaticfinalDateTimeFormatterlongDate=DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
privatestaticfinalDateTimeFormattermediumDate=DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
/*** 获取当前日期* * @return yyyy-MM-dd* @author zero 2019/03/30*/publicstaticStringgetNowDate_EN() {
returnString.valueOf(LocalDate.now());
    }
/*** 获取当前日期* * @return 字符串yyyy-MM-dd HH:mm:ss* @author zero 2019/03/30*/publicstaticStringgetNowTime_EN() {
returnLocalDateTime.now().format(yyyyMMddHHmmss_EN);
    }
/** 获取当前时间(yyyy-MM-dd HH) */publicstaticStringgetNowTime_EN_yMdH() {
returnLocalDateTime.now().format(yyyyMMddHH_EN);
    }
/** 获取当前时间(yyyy年MM月dd日) */publicstaticStringgetNowTime_CN_yMdH() {
returnLocalDateTime.now().format(yyyyMMddHH_CN);
    }
/** 获取当前时间(yyyy-MM-dd HH:mm) */publicstaticStringgetNowTime_EN_yMdHm() {
returnLocalDateTime.now().format(yyyyMMddHHmm_EN);
    }
/** 获取当前时间(yyyy年MM月dd日HH时mm分) */publicstaticStringgetNowTime_CN_yMdHm() {
returnLocalDateTime.now().format(yyyyMMddHHmm_CN);
    }
/** 获取当前时间(HH时mm分ss秒) */publicstaticStringgetNowTime_CN_HHmmss() {
returnLocalDateTime.now().format(HHmmss_CN);
    }
/*** 根据日期格式,获取当前时间* * @param formatStr 日期格式<br>*        <li>yyyy</li>*        <li>yyyy-MM-dd</li>*        <li>yyyy-MM-dd HH:mm:ss</li>*        <li>HH:mm:ss</li>* @return* @author zero 2019/03/30*/publicstaticStringgetTime(StringformatStr) {
returnLocalDateTime.now().format(DateTimeFormatter.ofPattern(formatStr));
    }
/*** 获取中文的当前日期* * @return yyyy年mm月dd日* @author zero 2019/03/30*/publicstaticStringgetNowDate_CN() {
returnLocalDate.now().format(yyyyMMdd_CN);
    }
/*** 获取中文当前时间* * @return yyyy年MM月dd日HH时mm分ss秒* @author zero 2019/03/30*/publicstaticStringgetNowTime_CN() {
returnLocalDateTime.now().format(yyyyMMddHHmmss_CN);
    }
/*** 简写本地当前日期:yy-M-dd<br>* 例如:19-3-30为2019年3月30日* * @return 字符串yy-M-dd* @author zero 2019/03/30*/publicstaticStringgetNowLocalTime_shot() {
returnLocalDateTime.now().format(shotDate);
    }
/*** 根据当地日期显示格式:yyyy年M月dd日 星期?(中国)* * @return 形如:2019年3月30日 星期六* @author zero 2019/03/30*/publicstaticStringgetNowLocalTime_full() {
returnLocalDateTime.now().format(fullDate);
    }
/*** 根据当地显示日期格式:yyyy年M月dd日(中国)* * @return 形如 2019年3月30日* @author zero 2019/03/30*/publicstaticStringgetNowLocalTime_long() {
returnLocalDateTime.now().format(longDate);
    }
/*** 根据当地显示日期格式:yyyy-M-dd(中国)* * @return 形如:2019-3-30* @author zero 2019/03/30*/publicstaticStringgetNowLocalTime_medium() {
returnLocalDateTime.now().format(mediumDate);
    }
/*** 获取当前日期的节点时间(年,月,周,日,时,分,秒)* * @param node 日期中的节点元素(年,月,周,日,时,分,秒)* @return 节点数字,如创建此方法的时间:年 2019,月 3,日 30,周 6* @author zero 2019/03/30 星期六*/publicstaticIntegergetNodeTime(Stringnode) {
LocalDateTimetoday=LocalDateTime.now();
IntegerresultNode=null;
switch (node) {
caseYEAR:
resultNode=today.getYear();
break;
caseMONTH:
resultNode=today.getMonthValue();
break;
caseWEEK:
resultNode=transformWeekEN2Num(String.valueOf(today.getDayOfWeek()));
break;
caseDAY:
resultNode=today.getDayOfMonth();
break;
caseHOUR:
resultNode=today.getHour();
break;
caseMINUTE:
resultNode=today.getMinute();
break;
caseSECOND:
resultNode=today.getSecond();
break;
default:
// 当前日期是当前年的第几天。例如:2019/1/3是2019年的第三天resultNode=today.getDayOfYear();
break;
        }
returnresultNode;
    }
/*** 将英文星期转换成数字* * @param enWeek 英文星期* @return int,如果数字小于0,则检查,看是否输入错误 or 入参为null* @author zero 2019/03/30*/publicstaticinttransformWeekEN2Num(StringenWeek) {
if (MONDAY.equals(enWeek)) {
return1;
        } elseif (TUESDAY.equals(enWeek)) {
return2;
        } elseif (WEDNESDAY.equals(enWeek)) {
return3;
        } elseif (THURSDAY.equals(enWeek)) {
return4;
        } elseif (FRIDAY.equals(enWeek)) {
return5;
        } elseif (SATURDAY.equals(enWeek)) {
return6;
        } elseif (SUNDAY.equals(enWeek)) {
return7;
        } else {
return-1;
        }
    }
/*** 获取当前日期之后(之后)的节点事件<br>* <ul>* 比如当前时间为:2019-03-30 10:20:30* </ul>* <li>node="hour",num=5L:2019-03-30 15:20:30</li>* <li>node="day",num=1L:2019-03-31 10:20:30</li>* <li>node="year",num=1L:2020-03-30 10:20:30</li>* * @param node 节点元素(“year”,"month","week","day","huor","minute","second")* @param num 第几天(+:之后,-:之前)* @return 之后或之后的日期* @author zero 2019/03/30*/publicstaticStringgetAfterOrPreNowTime(Stringnode, Longnum) {
LocalDateTimenow=LocalDateTime.now();
if (HOUR.equals(node)) {
returnnow.plusHours(num).format(yyyyMMddHHmmss_EN);
        } elseif (DAY.equals(node)) {
returnnow.plusDays(num).format(yyyyMMddHHmmss_EN);
        } elseif (WEEK.equals(node)) {
returnnow.plusWeeks(num).format(yyyyMMddHHmmss_EN);
        } elseif (MONTH.equals(node)) {
returnnow.plusMonths(num).format(yyyyMMddHHmmss_EN);
        } elseif (YEAR.equals(node)) {
returnnow.plusYears(num).format(yyyyMMddHHmmss_EN);
        } elseif (MINUTE.equals(node)) {
returnnow.plusMinutes(num).format(yyyyMMddHHmmss_EN);
        } elseif (SECOND.equals(node)) {
returnnow.plusSeconds(num).format(yyyyMMddHHmmss_EN);
        } else {
return"Node is Error!";
        }
    }
/*** 获取与当前日期相距num个之后(之前)的日期<br>* <ul>* 比如当前时间为:2019-03-30 10:20:30的格式日期* <li>node="hour",num=5L:2019-03-30 15:20:30</li>* <li>node="day",num=1L:2019-03-31 10:20:30</li>* <li>node="year",num=1L:2020-03-30 10:20:30</li>* </ul>* * @param dtf 格式化当前时间格式(dtf = yyyyMMddHHmmss_EN)* @param node 节点元素(“year”,"month","week","day","huor","minute","second")* @param num (+:之后,-:之前)* @return 之后之前的日期* @author zero 2019/03/30*/publicstaticStringgetAfterOrPreNowTimePlus(DateTimeFormatterdtf, Stringnode, Longnum) {
LocalDateTimenow=LocalDateTime.now();
if (HOUR.equals(node)) {
returnnow.plusHours(num).format(dtf);
        } elseif (DAY.equals(node)) {
returnnow.plusDays(num).format(dtf);
        } elseif (WEEK.equals(node)) {
returnnow.plusWeeks(num).format(dtf);
        } elseif (MONTH.equals(node)) {
returnnow.plusMonths(num).format(dtf);
        } elseif (YEAR.equals(node)) {
returnnow.plusYears(num).format(dtf);
        } elseif (MINUTE.equals(node)) {
returnnow.plusMinutes(num).format(dtf);
        } elseif (SECOND.equals(node)) {
returnnow.plusSeconds(num).format(dtf);
        } else {
return"Node is Error!";
        }
    }
/*** 当前时间的hour,minute,second之后(之前)的时刻* * @param node 时间节点元素(hour,minute,second)* @param num 之后(之后)多久时,分,秒(+:之后,-:之前)* @return HH:mm:ss 字符串* @author zero 2019/03/30*/publicstaticStringgetAfterOrPreNowTimeSimp(Stringnode, Longnum) {
LocalTimenow=LocalTime.now();
if (HOUR.equals(node)) {
returnnow.plusHours(num).format(HHmmss_EN);
        } elseif (MINUTE.equals(node)) {
returnnow.plusMinutes(num).format(HHmmss_EN);
        } elseif (SECOND.equals(node)) {
returnnow.plusSeconds(num).format(HHmmss_EN);
        } else {
return"Node is Error!";
        }
    }
/*** 检查重复事件,比如生日。TODO This is a example.* * @param birthDayStr* @return* @author zero 2019/03/31*/publicstaticbooleanisBirthday(intmonth, intdayOfMonth) {
MonthDaybirthDay=MonthDay.of(month, dayOfMonth);
MonthDaycurMonthDay=MonthDay.from(LocalDate.now());// MonthDay只存储了月、日。if (birthDay.equals(curMonthDay)) {
returntrue;
        }
returnfalse;
    }
/*** 获取当前日期第index日之后(之前)的日期(yyyy-MM-dd)* * @param index 第index天* @return 日期字符串:yyyy-MM-dd* @author zero 2019/03/31*/publicstaticStringgetAfterOrPreDayDate(intindex) {
returnLocalDate.now().plus(index, ChronoUnit.DAYS).format(yyyyMMdd_EN);
    }
/*** 获取当前日期第index周之前(之后)的日期(yyyy-MM-dd)* * @param index 第index周(+:之后,-:之前)* @return 日期字符串:yyyy-MM-dd* @author zero 2019/03/31*/publicstaticStringgetAfterOrPreWeekDate(intindex) {
returnLocalDate.now().plus(index, ChronoUnit.WEEKS).format(yyyyMMdd_EN);
    }
/*** 获取当前日期第index月之前(之后)的日期(yyyy-MM-dd)* * @param index 第index月(+:之后,-:之前)* @return 日期字符串:yyyy-MM-dd* @author zero 2019/03/31*/publicstaticStringgetAfterOrPreMonthDate(intindex) {
returnLocalDate.now().plus(index, ChronoUnit.MONTHS).format(yyyyMMdd_EN);
    }
/*** 获取当前日期第index年之前(之后)的日期(yyyy-MM-dd)* * @param index 第index年(+:之后,-:之前)* @return 日期字符串:yyyy-MM-dd* @author zero 2019/03/31*/publicstaticStringgetAfterOrPreYearDate(intindex) {
returnLocalDate.now().plus(index, ChronoUnit.YEARS).format(yyyyMMdd_EN);
    }
/*** 获取指定日期之前之后的第index的日,周,月,年的日期* * @param date 指定日期格式:yyyy-MM-dd* @param node 时间节点元素(日周月年)* @param index 之前之后第index个日期* @return yyyy-MM-dd 日期字符串* @author zero 2019/03/31*/publicstaticStringgetAfterOrPreDate(Stringdate, Stringnode, intindex) {
date=date.trim();
if (DAY.equals(node)) {
returnLocalDate.parse(date).plus(index, ChronoUnit.DAYS).format(yyyyMMdd_EN);
        } elseif (WEEK.equals(node)) {
returnLocalDate.parse(date).plus(index, ChronoUnit.WEEKS).format(yyyyMMdd_EN);
        } elseif (MONTH.equals(node)) {
returnLocalDate.parse(date).plus(index, ChronoUnit.MONTHS).format(yyyyMMdd_EN);
        } elseif (YEAR.equals(node)) {
returnLocalDate.parse(date).plus(index, ChronoUnit.YEARS).format(yyyyMMdd_EN);
        } else {
return"Wrong date format!";
        }
    }
/*** 检测:输入年份是否是闰年?* * @param date 日期格式:yyyy-MM-dd* @return true:闰年,false:平年* @author zero 2019/03/31*/publicstaticbooleanisLeapYear(Stringdate) {
returnLocalDate.parse(date.trim()).isLeapYear();
    }
/*** 计算两个日期字符串之间相差多少个周期(天,月,年)* * @param date1 yyyy-MM-dd* @param date2 yyyy-MM-dd* @param node 三者之一:(day,month,year)* @return 相差多少周期* @author zero 2019/03/31*/publicstaticintperidCount(Stringdate1, Stringdate2, Stringnode) {
date1=date1.trim();
date2=date2.trim();
if (DAY.equals(node)) {
returnPeriod.between(LocalDate.parse(date1), LocalDate.parse(date2)).getDays();
        } elseif (MONTH.equals(node)) {
returnPeriod.between(LocalDate.parse(date1), LocalDate.parse(date2)).getMonths();
        } elseif (YEAR.equals(node)) {
returnPeriod.between(LocalDate.parse(date1), LocalDate.parse(date2)).getYears();
        } else {
return0;
        }
    }
/*** 切割日期。按照周期切割成小段日期段。例如: <br>* * @param startDate 开始日期(yyyy-MM-dd)* @param endDate 结束日期(yyyy-MM-dd)* @param period 周期(天,周,月,年)* @return 切割之后的日期集合* @author zero 2019/04/02* @example*          <li>startDate="2019-02-28",endDate="2019-03-05",period="day"</li>*          <li>结果为:[2019-02-28, 2019-03-01, 2019-03-02, 2019-03-03, 2019-03-04, 2019-03-05]</li><br>*          <li>startDate="2019-02-28",endDate="2019-03-25",period="week"</li>*          <li>结果为:[2019-02-28,2019-03-06, 2019-03-07,2019-03-13, 2019-03-14,2019-03-20,*          2019-03-21,2019-03-25]</li><br>*          <li>startDate="2019-02-28",endDate="2019-05-25",period="month"</li>*          <li>结果为:[2019-02-28,2019-02-28, 2019-03-01,2019-03-31, 2019-04-01,2019-04-30,*          2019-05-01,2019-05-25]</li><br>*          <li>startDate="2019-02-28",endDate="2020-05-25",period="year"</li>*          <li>结果为:[2019-02-28,2019-12-31, 2020-01-01,2020-05-25]</li><br>*/publicstaticList<String>getPieDateRange(StringstartDate, StringendDate, Stringperiod) {
List<String>result=Lists.newArrayList();
LocalDateend=LocalDate.parse(endDate, yyyyMMdd_EN);
LocalDatestart=LocalDate.parse(startDate, yyyyMMdd_EN);
LocalDatetmp=start;
switch (period) {
caseDAY:
while (start.isBefore(end) ||start.isEqual(end)) {
result.add(start.toString());
start=start.plusDays(1);
                }
break;
caseWEEK:
while (tmp.isBefore(end) ||tmp.isEqual(end)) {
if (tmp.plusDays(6).isAfter(end)) {
result.add(tmp.toString() +","+end);
                    } else {
result.add(tmp.toString() +","+tmp.plusDays(6));
                    }
tmp=tmp.plusDays(7);
                }
break;
caseMONTH:
while (tmp.isBefore(end) ||tmp.isEqual(end)) {
LocalDatelastDayOfMonth=tmp.with(TemporalAdjusters.lastDayOfMonth());
if (lastDayOfMonth.isAfter(end)) {
result.add(tmp.toString() +","+end);
                    } else {
result.add(tmp.toString() +","+lastDayOfMonth);
                    }
tmp=lastDayOfMonth.plusDays(1);
                }
break;
caseYEAR:
while (tmp.isBefore(end) ||tmp.isEqual(end)) {
LocalDatelastDayOfYear=tmp.with(TemporalAdjusters.lastDayOfYear());
if (lastDayOfYear.isAfter(end)) {
result.add(tmp.toString() +","+end);
                    } else {
result.add(tmp.toString() +","+lastDayOfYear);
                    }
tmp=lastDayOfYear.plusDays(1);
                }
break;
default:
break;
        }
returnresult;
    }
/*** 指定日期月的最后一天(yyyy-MM-dd)* * @param curDate 日期格式(yyyy-MM-dd)* @param firstOrLast true:第一天,false:最后一天* @return* @author zero 2019/04/13*/publicstaticStringgetLastDayOfMonth(StringcurDate, booleanfirstOrLast) {
if (firstOrLast) {
returnLocalDate.parse(curDate, yyyyMMdd_EN).with(TemporalAdjusters.firstDayOfMonth()).toString();
        } else {
returnLocalDate.parse(curDate, yyyyMMdd_EN).with(TemporalAdjusters.lastDayOfMonth()).toString();
        }
    }
/*** 指定日期年的最后一天(yyyy-MM-dd)* * @param curDate 指定日期(格式:yyyy-MM-dd)* @param firstOrLast true:第一天,false:最后一天* @return* @author zero 2019/04/13*/publicstaticStringgetLastDayOfYear(StringcurDate, booleanfirstOrLast) {
if (firstOrLast) {
returnLocalDate.parse(curDate, yyyyMMdd_EN).with(TemporalAdjusters.firstDayOfYear()).toString();
        } else {
returnLocalDate.parse(curDate, yyyyMMdd_EN).with(TemporalAdjusters.lastDayOfYear()).toString();
        }
    }
/*** 获取下一个星期的日期* * @param curDay yyyy-MM-dd* @param dayOfWeek monday:1~sunday:7* @param isContainCurDay 是否包含当天,true:是,false:不包含* @return 日期(yyyy-MM-dd)* @author zero 2019/04/02*/publicstaticStringgetNextWeekDate(StringcurDay, intdayOfWeek, booleanisContainCurDay) {
dayOfWeek=dayOfWeek<1||dayOfWeek>7?1 : dayOfWeek;
if (isContainCurDay) {
returnLocalDate.parse(curDay).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dayOfWeek))).toString();
        } else {
returnLocalDate.parse(curDay).with(TemporalAdjusters.next(DayOfWeek.of(dayOfWeek))).toString();
        }
    }
/*** 获取上一个星期的日期* * @param curDay 指定日期(yyyy-MM-dd)* @param dayOfWeek 数字范围(monday:1~sunday:7)* @param isCurDay 是否包含当天,true:是,false:不包含* @return 日期(yyyy-MM-dd)* @author zero 2019/04/02*/publicstaticStringgetPreWeekDate(StringcurDay, intdayOfWeek, booleanisCurDay) {
dayOfWeek=dayOfWeek<1||dayOfWeek>7?1 : dayOfWeek;
if (isCurDay) {
returnLocalDate.parse(curDay).with(TemporalAdjusters.previousOrSame(DayOfWeek.of(dayOfWeek))).toString();
        } else {
returnLocalDate.parse(curDay).with(TemporalAdjusters.previous(DayOfWeek.of(dayOfWeek))).toString();
        }
    }
/*** 获取指定日期当月的最后或第一个星期日期* * @param curDay 指定日期(yyyy-MM-dd)* @param dayOfWeek 周几(1~7)* @param lastOrFirst true:最后一个,false本月第一个* @return 日期(yyyy-MM-dd)* @author zero 2019/04/02*/publicstaticStringgetFirstOrLastWeekDate(StringcurDay, intdayOfWeek, booleanlastOrFirst) {
dayOfWeek=dayOfWeek<1||dayOfWeek>7?1 : dayOfWeek;
if (lastOrFirst) {
returnLocalDate.parse(curDay).with(TemporalAdjusters.lastInMonth(DayOfWeek.of(dayOfWeek))).toString();
        } else {
returnLocalDate.parse(curDay).with(TemporalAdjusters.firstInMonth(DayOfWeek.of(dayOfWeek))).toString();
        }
    }
publicstaticvoidmain(String[] args) {
System.out.println("===================");
// String curDate = "2019-04-10"; // 指定日期// System.out.println(getLastDayOfMonth(curDate, true));// System.out.println(getLastDayOfMonth(curDate, false));// System.out.println(getLastDayOfYear(curDate, true));// System.out.println(getLastDayOfYear(curDate, false));// System.out.println("===================");// String startDate = "2019-02-28", endDate = "2019-03-05", period = DAY;// System.out.println(getPieDateRange(startDate, endDate, period));// System.out.println("===================");// System.out.println(getNextWeekDate("2019-02-28", 1, false));// System.out.println(getPieDateRange("2019-12-28", "2020-03-01", DAY));// System.out.println("===================");// System.out.println(getFirstOrLastWeekDate("2019-04-02", 0, false));// System.out.println(getPreWeekDate("2019-04-02", 2, false));// System.out.println(getNextWeekDate("2019-04-02", 2, false));// System.out.println("===================");// System.out.println("当前时间戳:" + Instant.now());// System.out.println("当前时间:" + LocalDateTime.now());// System.out.println("===================");// System.out.println(peridCount("2019-01-30", "2019-03-31", MONTH));// System.out.println(isLeapYear("2019-03-31"));// System.out.println(LocalDate.now().isLeapYear());// System.out.println("===================");// System.out.println(getAfterOrPreDate("2019-03-31", WEEK, -1));// System.out.println(getAfterOrPreDayDate(-5));// System.out.println(getAfterOrPreDayDate(-3));// System.out.println(getAfterOrPreDayDate(6));// System.out.println(getAfterOrPreYearDate(6));// System.out.println(getAfterOrPreWeekDate(1));// System.out.println("===================");// clock();// isBirthday(7, 13);// LocalDate date0 = LocalDate.of(2019, Month.OCTOBER, 31);// LocalDate date = LocalDate.of(2019, 3, 31);// System.out.println(date0.equals(LocalDate.now()));// System.out.println(date.getYear() + "-" + date.getMonthValue() + "-" + date.getDayOfMonth());// System.out.println(getNowTime_EN());// System.out.println(getAfterNowTimeSimp(SECOND, 5L));// System.out.println("===================");// System.out.println(getAfterNowTime(SECOND, 5L));// System.out.println(getAfterNowTimePlus(yyyyMMddHHmm_EN, SECOND, 5L));// System.out.println("===================");// System.out.println(getNowDate_EN());// System.out.println(getNowDate_CN());// System.out.println(getTime("HH:mm:ss"));// System.out.println(getNowTime_EN());// System.out.println(getNowTime_CN());// System.out.println(getNowLocalTime_shot());// System.out.println(getNowLocalTime_full());// System.out.println(getNowLocalTime_long());// System.out.println(getNowLocalTime_medium());// System.out.println(getNodeTime("week"));// System.out.println(transformWeekEN2Num(null));// System.out.println("===================");    }
}
目录
相关文章
|
2天前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
8 2
|
3天前
|
算法 Java
基于java雪花算法工具类SnowflakeIdUtils-来自chatGPT
基于java雪花算法工具类SnowflakeIdUtils-来自chatGPT
11 3
|
4天前
|
Java easyexcel
java开发excel导入导出工具类基于EasyExcel
java开发excel导入导出工具类基于EasyExcel
13 1
|
4天前
|
Java
java工具类调用service层,mapper层
java工具类调用service层,mapper层
8 1
|
9天前
|
Java 数据库连接
Java的数据库连接工具类的编写
Java的数据库连接工具类的编写
11 1
|
16天前
|
Java 数据安全/隐私保护
JAVA中MD5加密(MD5工具类)
JAVA中MD5加密(MD5工具类)
16 1
|
24天前
|
存储 并行计算 Java
Java8中JUC包同步工具类深度解析(Semaphore,CountDownLatch,CyclicBarrier,Phaser)
Java8中JUC包同步工具类深度解析(Semaphore,CountDownLatch,CyclicBarrier,Phaser)
18 2
|
2天前
|
XML 安全 Java
一篇文章讲明白JAVA常用的工具类
一篇文章讲明白JAVA常用的工具类
|
3天前
|
Java 数据安全/隐私保护
随机密码生成工具类(java)
随机密码生成工具类(java)
5 0
|
3天前
|
Java 数据安全/隐私保护
AES加密工具类(java)
AES加密工具类(java)
21 0