java8中关于时间的处理整理
package com.xb.utils;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/**
* Author Mr. Guo
* Create 2019/2/22 - 13:59
*/
public class dateFormatUtils {
//获取当天的日期(2019-02-26)
public static LocalDate getCurrentDate = LocalDate.now();
//获取当前的时间(18:41:32)
public static LocalTime getCurrentTime = LocalTime.now().withNano(0);
//指定时间
public static LocalTime time(int hour, int minute, int second) {
return LocalTime.of(hour, minute, second);
}
public static LocalTime time2(String time) {
return LocalTime.parse(time);
}
//当前时间增加x小时
public static LocalTime nowTimePlusxHour(int incr) {
return dateFormatUtils.getCurrentTime.plusHours(incr);
}
public static LocalTime nowTimePlusxHosr(int incr) {
return dateFormatUtils.getCurrentTime.plus(incr, ChronoUnit.HOURS);
}
//生日检查或账单日检查
public static boolean judgeBirthday(int year, int month, int day, int cyear, int cmonth, int cday) {
LocalDate birthday = LocalDate.of(year, month, day);
MonthDay birthdayMd = MonthDay.of(birthday.getMonth(), birthday.getDayOfMonth());
MonthDay today = MonthDay.from(LocalDate.of(cyear, cmonth, cday));
return today.equals(birthdayMd);
}
//比较当前日期是否在指定日期之后
public static boolean isAfterOrBefore(int year, int month, int day) {
LocalDate today = LocalDate.now();
LocalDate specifyDate = LocalDate.of(year, month, day);
return today.isAfter(specifyDate);
}
//获取当前的时区(Asia/Shanghai)
public static ZoneId currentZone = ZoneId.systemDefault();
//查看指定时区的当前时间
public static LocalDateTime pointedDateTime(String zone) {
return LocalDateTime.now(ZoneId.of(zone));
}
//获取带有时区的时间(2019-02-26T19:21:51.669+08:00[Asia/Shanghai])
public static ZonedDateTime zonedDateTime(String zone) {
return ZonedDateTime.now(ZoneId.of(zone));
}
//比较两个日期的时间差
public static int periodDate(int syear, int smonth, int sday, String condition) {
LocalDate today = LocalDate.now();
LocalDate specifyDate = LocalDate.of(syear, smonth, sday);
Period period = Period.between(specifyDate, today);
if ("day".equals(condition))
return (int) specifyDate.until(today, ChronoUnit.DAYS);
if ("month".equals(condition))
return period.getMonths();
if ("year".equals(condition))
return period.getYears();
return -1;
}
//日期时间格式解析、格式化
public static LocalDate dateParse(String specifyDate) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.BASIC_ISO_DATE;
return LocalDate.parse(specifyDate, dateTimeFormatter);
}
//转为自定义格式的时间
public static String dateTimeFormatter(String regxDate, int cyear, int month, int cday, boolean ConverCurrentDate) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(regxDate);
if (ConverCurrentDate)
return dateTimeFormatter.format(LocalDate.now());
return dateTimeFormatter.format(LocalDate.of(cyear, month, cday));
}
//时间类与Date类的相互转换
public static Instant DateConverInstant() {
Instant instant = Instant.now();
Date date = Date.from(instant);
Instant instant1 = date.toInstant();
return instant1;
}
//date转换为LocalDateTime
public static LocalDateTime DateToLocalDateTime() {
Date date = new Date();
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
//LocalDateTime转换为Date
public static Date LocalDateTimeToDate() {
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
//LocalDate转Date
//LocalDate不包含时间,所以转换date的时候,会默认转为当天时间的,00:00:00
public static Date LocalDateToDate() {
LocalDate localDate = LocalDate.now();
Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
}