- package com.effective.common.base.
- date;
- import java.time.Instant;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- import java.time.Period;
- import java.time.ZoneId;
- import java.time.format.DateTimeFormatter;
- import java.time
- .temporal.ChronoUnit;
- import java.util.Date;
- /**
- * 日期工具类
- * @author yanweiqi
- * @since 2016-5-6
- *
- */
- public class LocalDateUtils {private static ZoneId zone = ZoneId.systemDefault();
- /**
- * 字符串转 Date
- * @paramdate
- * @return
- * @throws Exception
- */
- public static Date convertToDate(String
- date) throws Exception{
- LocalDate localDate = null;
- if(null ==date){
- throw new NullPointerException(
- "date isn't null");
- }else {
- localDate = LocalDate.parse(
- date);
- return
- convertToDate(localDate);
- }
- }
- /**
- * 字符串转 LocalDateTime
- * @paramdate
- * @return localDateTime
- */
- public static LocalDateTime convertToLocalDateTime(String
- date){
- LocalDateTime localDateTime = null;
- if(null ==date){
- throw new NullPointerException(
- "date isn't null");
- }else {
- localDateTime = LocalDateTime.parse(
- date);
- return localDateTime;
- }
- }
- /**
- * LocalDate 转 Date
- * @param localDate
- * @return Date
- */
- public static Date convertToDate(LocalDate localDate){
- Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
- return Date.from(instant);
- }
- /**
- * LocalDate 转 Date
- * @param localDateTime
- * @return Date
- */
- public static Date convertToDate(LocalDateTime localDateTime){
- Instant instant = localDateTime.atZone(zone).toInstant();
- return Date.from(instant);
- }
- /**
- * Date 转 LocalDate
- * @paramdate
- * @return localDate
- */
- public static LocalDate convertToLocalDate(Date
- date){
- Instant instant =date.toInstant();
- return
- convertToLocalDateTime(instant).toLocalDate();
- }
- /**
- * Date 转 LocalTime
- * @paramdate
- * @return localDate
- */
- public static LocalTime convertToLocalTime(Date
- date){
- Instant instant =date.toInstant();
- return
- convertToLocalDateTime(instant).toLocalTime();
- }
- /**
- * Date 转 LocalDatetime
- * @paramdate
- * @return localDate
- */
- public static LocalDateTime convertToLocalDateTime(Date
- date){
- Instant instant =date.toInstant();
- return
- convertToLocalDateTime(instant);
- }
- /**
- * Instant 转 LocalDateTime
- * @param instant
- * @return
- */
- public static LocalDateTime convertToLocalDateTime(Instant instant){
- return
- LocalDateTime.ofInstant(instant, zone);
- }
- /**
- * LocalDateTime 转 Instant
- * @param localDateTime
- * @return
- */
- public static Instant convertToInstant(LocalDateTime localDateTime){
- return
- localDateTime.atZone(zone).toInstant();
- }
- /**
- * LocalDate 转 Instant
- * @param localDate
- * @return
- */
- public static Instant convertToInstant(LocalDate localDate){
- return
- localDate.atStartOfDay(zone).toInstant();
- }
- /**
- * LocalDate 转 LocalDateTime
- * @param localDate
- * @return LocalDateTime
- */
- public static LocalDateTime convertToLocalDateTime(LocalDate localDate){
- return
- localDate.atStartOfDay();
- }
- /**
- * 日周期格式化
- * @param localDateTime
- * @param formatStyle
- * @return
- */
- public static String formatter(LocalDateTime localDateTime, String formatStyle){
- return
- DateTimeFormatter.ofPattern(formatStyle).
- format(localDateTime);
- }
- /**
- * 设置年
- * @param sourceDate
- * @param year
- * @return LocalDateTime
- */
- public static LocalDateTime setYear(LocalDateTime sourceDate, Integer year){
- return
- sourceDate.withYear(year);
- }
- /**
- * 设置月
- * @param sourceDate
- * @param month
- * @return LocalDateTime
- */
- public static LocalDateTime setMonth(LocalDateTime sourceDate, Integer month){
- return
- sourceDate.withMonth(month);
- }
- /**
- * 设置天
- * @param sourceDate
- * @param month
- * @return LocalDateTime
- */
- public static LocalDateTime setDayOfMonth(LocalDateTime sourceDate, Integer dayOfMonth){
- return
- sourceDate.withDayOfMonth(dayOfMonth);
- }
- /**
- * 设置小时
- * @param sourceDate
- * @param hour
- * @return
- */
- public static LocalDateTime setHour(LocalDateTime sourceDate,Integer hour){
- return
- sourceDate.withHour(hour);
- }
- /**
- * 设置分钟
- * @param sourceDate
- * @param minute
- * @return
- */
- public static LocalDateTime setMinute(LocalDateTime sourceDate,Integer minute){
- return
- sourceDate.withMinute(minute);
- }
- /**
- * 设置秒
- * @param sourceDate
- * @param second
- * @return
- */
- public static LocalDateTime setSecond(LocalDateTime sourceDate,Integer second){
- return
- sourceDate.withSecond(second);
- }
- /**
- * 修改年月日
- * @param sourceDate
- * @param year
- * @param month
- * @param dayOfMonth
- * @return
- */
- public static LocalDateTime setYMD(LocalDateTime sourceDate, Integer year, Integer month, Integer dayOfMonth) {
- return
- sourceDate.withYear(year).withMonth(month).withDayOfMonth(dayOfMonth);
- }
- /**
- * 修改时分秒
- * @param sourceDate
- * @param hour
- * @param minute
- * @param second
- * @return
- */
- public static LocalDateTime setHMS(LocalDateTime sourceDate,Integer hour, Integer minute, Integer second) {
- return
- sourceDate.withHour(hour).withMinute(minute).withSecond(second);
- }
- /**
- * 计算相差的天数
- * @param beginDate
- * @param endDate
- * @return
- */
- public static int getInteverDays(LocalDate beginDate,LocalDate endDate){
- Period period = Period.between(beginDate, endDate);
- return period.getDays();
- }
- /**
- * 日期加减
- * @param num 数量
- * @param unit 单位
- * @param LocalDate 原日期
- * @return
- LocalDate 增加后的日期
- */
- @SuppressWarnings("static-access")
- public static LocalDate addLocalDate(long num,ChronoUnit unit,final LocalDate localDate){
- LocalDate resultDate;
- if(num> 0){
- resultDate = localDate.now().plus(num, unit);
- }else {
- resultDate = localDate.now().minus(Math.abs(num), unit);
- }
- return resultDate;
- }
- /**
- * 日期时分秒加
- * @param num 数量
- * @param unit 单位
- * @param localDateTime 原日期
- * @return
- LocalDateTime 增加后的日期
- */
- @SuppressWarnings("static-access")
- public static LocalDateTime addLocalDateTime(long num,ChronoUnit unit,LocalDateTime localDateTime){
- LocalDateTime resultDateTime;
- if(num> 0){
- resultDateTime = localDateTime.now().plus(num, unit);
- }else {
- resultDateTime = localDateTime.now().minus(Math.abs(num),unit);
- }
- return resultDateTime;
- }
- /**
- * 时分秒加减
- * @param num 数量
- * @param unit 单位
- * @param localTime 原日期
- * @return
- LocalDateTime 增加后的日期
- */
- @SuppressWarnings("static-access")
- public static LocalTime addLocalTime(long num,ChronoUnit unit,LocalTime localTime){
- LocalTime resultTime;
- if(num> 0){
- resultTime = localTime.now().plus(num, unit);
- }else {
- resultTime = localTime.now().minus(Math.abs(num), unit);
- }
- return resultTime;
- }
- public static void main(String[] args){
- LocalDateTimetime
- = LocalDateTime.now();
- String rr = formatter(
- time,
- "yyyy-MM-dd HH:mm:ss"
- );
- System.out.println(rr);
- LocalDateTime time2 = addLocalDateTime(-2, ChronoUnit.HOURS,
- time);
- String yy = formatter(time2,
- "yyyy-MM-dd HH:mm:ss"
- );
- System.out.println(yy);
- }
来源: http://www.92to.com/bangong/2018/08-26/34043816.html