java工具类(8) -日期操作-DateUtil

最近做的需求有关日期处理的,这里总结一下,直接贴代码

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    private final static String UTCTimeLen13 = "UTCTimeLen13";
    private final static String UTCTimeLen10 = "UTCTimeLen10";
    private final static String FORMAT_PATTERN1 = "yyyy-MM-dd HH:mm:ss";
    private final static String FORMAT_PATTERN5 = "yyyy-MM-dd HH:mm:ss:SSS";
    private final static String FORMAT_PATTERN2 = "yyyyMMddHHmmss";
    private final static String FORMAT_PATTERN6 = "yyyyMMddHHmmssSSS";
    private final static String FORMAT_PATTERN3 = "YYYY-MM-dd";
    private final static String FORMAT_PATTERN4 = "yyyyMMdd";

   /**
     * @return
     * @Description 根据日期格式取当前的日期或时间
     * @Param pattern
     **/
    public static String getPattern(String pattern) {
        if (UTCTimeLen13.equals(pattern)) {
            return UTCTimeLen13Parse();
        }else if (UTCTimeLen10.equals(pattern)) {
            return UTCTimeLen10Parse();
        } else if (FORMAT_PATTERN1.equals(pattern) || FORMAT_PATTERN2.equals(pattern)) {
            return localDateTimeParse(pattern);
        } else if (FORMAT_PATTERN3.equals(pattern) || FORMAT_PATTERN4.equals(pattern)) {
            return localDateParse(pattern);
        }
        return "";
    }


    /**
     * @Description 根据日期格式取当前的日期或时间
     * @Param num 加减值
     * @Param type day or sec
     * @Param pattern
     * @return
     **/
    public static String getPattern(int num, String type,String pattern) {
        if (UTCTimeLen13.equals(pattern)) {
            return UTCTimeLen13Parse(num,type);
        }else if (UTCTimeLen10.equals(pattern)) {
            return UTCTimeLen10Parse(num,type);
        } else if (FORMAT_PATTERN1.equals(pattern) || FORMAT_PATTERN2.equals(pattern)) {
            return localDateTimeParse(num,type,pattern);
        } else if (FORMAT_PATTERN3.equals(pattern) || FORMAT_PATTERN4.equals(pattern)) {
            return localDateParse(num,pattern);
        }
        return "";
    }


    /**
     * @return
     * @Description
     * @Param num 加减值
     * @Param type day或sec
     **/
    public static String UTCTimeLen13Parse(int num, String type) {
        if ("day".equals(type)) {
            return UTCTimeLen13Parse_day(num);
        } else if ("sec".equals(type)) {
            return UTCTimeLen13Parse_sec(num);
        }
        return "";
    }

    /**
     * @return Stringe
     * @Description UTC 毫秒  13位
     **/
    public static String UTCTimeLen13Parse() {
        return String.valueOf(Instant.now().toEpochMilli());
    }

    /**
     * @return String
     * @Description 加减天
     * @Param day
     **/
    public static String UTCTimeLen13Parse_day(int day) {
        return String.valueOf(Instant.now().minus(Duration.ofDays(day)).toEpochMilli());
    }

    /**
     * @return String
     * @Description 加减秒
     * @Param 秒
     **/
    public static String UTCTimeLen13Parse_sec(int sec) {
        return String.valueOf(Instant.now().plus(Duration.ofSeconds(sec)).toEpochMilli());
    }


    public static String UTCTimeLen10Parse(int num, String type) {
        if ("day".equals(type)) {
            return UTCTimeLen10Parse_day(num);
        } else if ("sec".equals(type)) {
            return UTCTimeLen10Parse_sec(num);
        }
        return "";
    }

    /**
     * @return Stringe
     * @Description UTC 秒  10位
     **/
    public static String UTCTimeLen10Parse() {
        return String.valueOf(Instant.now().getEpochSecond());
    }

    /**
     * @return String
     * @Description UTC时间加减天
     * @Param day
     **/
    public static String UTCTimeLen10Parse_day(int day) {
        return String.valueOf(Instant.now().plus(Duration.ofDays(day)).getEpochSecond());
    }

    /**
     * @return String
     * @Description 加减秒
     * @Param 秒
     **/
    public static String UTCTimeLen10Parse_sec(int sec) {
        return String.valueOf(Instant.now().plus(Duration.ofSeconds(sec)).getEpochSecond());
    }

    /**
     * @return String
     * @Description yyyyMMdd  yyyy-MM-dd
     * @Param pattern 转化格式
     **/
    public static String localDateParse(String pattern) {
        LocalDate today = LocalDate.now();
        return today.format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * @return String
     * @Description yyyyMMdd  yyyy-MM-dd
     * @Param num  加减值
     * @Param pattern 转化格式
     **/
    public static String localDateParse(int day, String pattern) {
        LocalDate today = LocalDate.now();
        LocalDate var1 = today.plusDays(day);
        return var1.format(DateTimeFormatter.ofPattern(pattern));
    }


    /**
     * @return String
     * @Description
     * @Param pattern
     **/
    public static String localDateTimeParse(String pattern) {
        LocalDateTime nowTime = LocalDateTime.now();
        return nowTime.format(DateTimeFormatter.ofPattern(pattern));

    }

    /**
     * @return String
     * @Description yyyyMMddHHmmss  yyyy-MM-dd HH:mm:ss
     * @Param num  加减值
     * @Param type  天还是秒
     * @Param pattern 转化格式
     **/
    public static String localDateTimeParse(int num, String type, String pattern) {
        if ("day".equals(type)) {
            return localDateTimeParse_day(num, pattern);
        } else if ("sec".equals(type)) {
            return localDateTimeParse_sec(num, pattern);
        }
        return "";

    }

    /**
     * @return String
     * @Description 加减天
     * @Param day
     * @Param pattern
     **/
    public static String localDateTimeParse_day(int day, String pattern) {
        LocalDateTime nowTime = LocalDateTime.now();
        LocalDateTime var1 = nowTime.plusDays(day);
        return var1.format(DateTimeFormatter.ofPattern(pattern));

    }

    /**
     * @return String
     * @Description 加减天
     * @Param sec
     * @Param pattern
     **/
    public static String localDateTimeParse_sec(int sec, String pattern) {
        LocalDateTime nowTime = LocalDateTime.now();
        LocalDateTime var1 = nowTime.plusSeconds(sec);
        return var1.format(DateTimeFormatter.ofPattern(pattern));

    }


    public static String timestampToDateStr(Long milliSecond) {
        Instant instant = Instant.ofEpochMilli(milliSecond);
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

        return localDateTimeFormat(localDateTime, FORMAT_PATTERN3);
    }


    public static String timestampToDateStr(Long milliSecond, String pattern) {
        Instant instant = Instant.ofEpochMilli(milliSecond);
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        return localDateTimeFormat(localDateTime, pattern);
    }


    public static String localDateFormat(LocalDate localDate, String pattern) {
        return localDate.format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 将localDateTime 按照一定的格式转换成String
     *
     * @param localDateTime
     * @param pattern
     * @return
     */
    public static String localDateTimeFormat(LocalDateTime localDateTime, String pattern) {
        return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 将String 按照pattern 转换成LocalDate
     *
     * @param time
     * @param pattern
     * @return
     */
    public static LocalDate localDateParse(String time, String pattern) {
        return LocalDate.parse(time, DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 将String 按照pattern 转换成LocalDateTime
     *
     * @param time
     * @param pattern
     * @return
     */
    public static LocalDateTime localDateTimeParse(String time, String pattern) {
        return LocalDateTime.parse(time, DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 将date转换成String
     *
     * @param date
     * @param pattern
     * @return
     */
    public static String dateFormat(Date date, String pattern) {
        return localDateTimeFormat(dateToLocalDateTime(date), pattern);
    }

    /**
     * 将LocalDate 转换成 Date
     *
     * @param localDate
     * @return
     */
    public static Date localDateToDate(LocalDate localDate) {
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
        return Date.from(zdt.toInstant());
    }

    /**
     * 将LocalDateTime 转换成 Date
     *
     * @param localDateTime
     * @return
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDateTime.atZone(zoneId);
        return Date.from(zdt.toInstant());
    }

    /**
     * 将 Date 转换成LocalDate
     * atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
     *
     * @param date
     * @return
     */
    public static LocalDate dateToLocalDate(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        return instant.atZone(zoneId).toLocalDate();
    }

    /**
     * 将 Date 转换成LocalDateTime
     * atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
     *
     * @param date
     * @return
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        return instant.atZone(zoneId).toLocalDateTime();
    }

    /**
     * 计算两个LocalDateTime 之间的毫秒数
     *
     * @param time1
     * @param time2
     * @return
     */
    public static Long minusToMillsLocalDateTime(LocalDateTime time1, LocalDateTime time2) {
        return Duration.between(time1, time2).toMillis();
    }

    /**
     * 计算两个LocalTime 之间的毫秒数
     *
     * @param time1
     * @param time2
     * @return
     */
    public static Long minusToMillsLocalTime(LocalTime time1, LocalTime time2) {
        return Duration.between(time1, time2).toMillis();
    }

    /**
     * 计算两个LocalDate 之间的毫秒数
     *
     * @param time1
     * @param time2
     * @return
     */
    public static Long minusToMillsLocalDate(LocalDate time1, LocalDate time2) {
        return Duration.between(time1, time2).toMillis();
    }

    /**
     * 计算两个LocalDate 之间的Period
     *
     * @param time1
     * @param time2
     * @return
     */
    public static Period periodLocalDate(LocalDate time1, LocalDate time2) {
        return Period.between(time1, time2);
    }

    /**
     * 计算两个Date 之间的Period
     *
     * @param date1
     * @param date2
     * @return
     */
    public static Period periodDate(Date date1, Date date2) {
        return periodLocalDate(dateToLocalDate(date1), dateToLocalDate(date2));
    }

    /**
     * 计算两个Date之间的 Period
     *
     * @param time1
     * @param time2
     * @return
     */
    public static Long minusToMillsDate(Date time1, Date time2) {
        return minusToMillsLocalDateTime(dateToLocalDateTime(time1), dateToLocalDateTime(time2));
    }


    /**
     * 时间戳转换成日期格式字符串
     *
     * @param seconds 精确到秒的字符串
     * @param format
     * @return
     */
    public static String timeStamp2Date(String seconds, String format) {
        if (seconds == null || seconds.isEmpty() || seconds.equals("null")) {
            return "";
        }
        if (format == null || format.isEmpty()) {
            format = "yyyy-MM-dd HH:mm:ss";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new Date(Long.valueOf(seconds + "000")));
    }

    /**
     * 日期格式字符串转换成时间戳
     *
     * @param date_str 字符串日期
     * @param format   如:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String date2TimeStamp(String date_str, String format) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return String.valueOf(sdf.parse(date_str).getTime() / 1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 取得当前时间戳(精确到秒)
     *
     * @return
     */
    public static String timeStamp() {
        long time = System.currentTimeMillis();
        String t = String.valueOf(time / 1000);
        return t;
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值