jdk1.8日期转换(Date、LocalDate、LocalDateTime、Timestamp之间转换)

仅记录一下

// Copyright 2016-2101 Pica.
package com.pica.cloud.health.sms.common.utils;

import java.io.Serializable;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @ClassName SmsDateUtil
 * @Description 时间处理工具类
 * @Author Chongwen.jiang
 * @Date 2019/6/11 15:53
 * @ModifyDate 2019/6/11 15:53
 * @Version 1.0
 */
public class SmsDateUtil implements Serializable {
    public static final String DATE_YYYYMM_PATTERN = "yyyyMM";
    public static final String DATE_YEAR_MONTH_PATTERN = "yyyy-MM";
    public static final String DATE_YEAR_PATTERN = "yyyy";
    public static final String DATE_PATTERN = "yyyy-MM-dd";
    public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_SHORTTIME_PATTERN = "yyyy-MM-dd HH:mm";
    public static final String DATE_PATTERN_2 = "yyyy/MM/dd";
    public static final String DATE_POINT_PATTERN = "yyyy.MM.dd";
    public static final String DATE_POINT2_PATTERN = "yyyy.MM";
    public static final String DATE_YYYYMMDDHHmm = "yyyy年MM月dd日 HH:mm";
    public static final String DATE_HHmmss = "HH:mm:ss";
    public static final String DATE_mdHHmmss = "MM-dd HH:mm:ss";

    /**
     * @Description Date对象转换为LocalDateTime对象
     * @Author Chongwen.jiang
     * @Date 2019/6/11 16:02
     * @ModifyDate 2019/6/11 16:02
     * @Params [date, pattern]
     * @Return java.time.LocalDateTime
     */
    public static LocalDateTime date2LocalDateTime(Date date){
        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    }

    /**
     * @Description LocalDateTime对象转换为Date对象
     * @Author Chongwen.jiang
     * @Date 2019/6/11 16:03
     * @ModifyDate 2019/6/11 16:03
     * @Params [localDateTime]
     * @Return java.util.Date
     */
    public static Date localDateTime2Date(LocalDateTime localDateTime){
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = localDateTime.atZone(zoneId);
        return Date.from(zdt.toInstant());
    }

    /**
     * @Description LocalDateTime对象转换为指定格式字符串
     * @Author Chongwen.jiang
     * @Date 2019/6/11 16:03
     * @ModifyDate 2019/6/11 16:03
     * @Params [localDateTime, pattern]
     * @Return java.lang.String
     */
    public static String formatTime(LocalDateTime localDateTime, String pattern){
        if(null == localDateTime){
            localDateTime = LocalDateTime.now();
        }
        return DateTimeFormatter.ofPattern(pattern).format(localDateTime);
    }

    /**
     * @Description timestamp转换为指定格式字符串
     * @Author Chongwen.jiang
     * @Date 2019/6/13 19:09
     * @ModifyDate 2019/6/13 19:09
     * @Params [date, pattern]
     * @Return java.lang.String
     */
    public static String format(Long date, String pattern){
        return formatTime(timeStamp2LocalDateTime(date), pattern);
    }

    /**
     * @Description Date对象转换为指定格式字符串
     * @Author Chongwen.jiang
     * @Date 2019/6/13 18:38
     * @ModifyDate 2019/6/13 18:38
     * @Params [date, pattern]
     * @Return java.lang.String
     */
    public static String format(Date date, String pattern){
        return new SimpleDateFormat(pattern).format(date);
    }

    /**
     * @Description Date对象转换为LocalDate对象
     * @Author Chongwen.jiang
     * @Date 2019/6/11 16:17
     * @ModifyDate 2019/6/11 16:17
     * @Params [date]
     * @Return java.time.LocalDate
     */
    public static LocalDate date2LocalDate(Date date){
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * @Description Date转换为timestamp
     * @Author Chongwen.jiang
     * @Date 2019/6/13 13:16
     * @ModifyDate 2019/6/13 13:16
     * @Params [date]
     * @Return long
     */
    public static long date2Timestamp(Date date){
        if(null == date){
            date = new Date();
        }
        return Timestamp.valueOf(date2LocalDateTime(date)).getTime();
    }

    /**
     * @Description LocalDateTime转换为timestamp
     * @Author Chongwen.jiang
     * @Date 2019/6/13 13:16
     * @ModifyDate 2019/6/13 13:16
     * @Params [localDateTime]
     * @Return long
     */
    public static long localDate2Timestamp(LocalDateTime localDateTime){
        if(null == localDateTime){
            localDateTime = LocalDateTime.now();
        }
        return Timestamp.valueOf(localDateTime).getTime();
    }

    /**
     * @Description 时间戳转换为LocalDateTime
     * @Author Chongwen.jiang
     * @Date 2019/6/13 15:03
     * @ModifyDate 2019/6/13 15:03
     * @Params [timestamp]
     * @Return java.time.LocalDateTime
     */
    public static LocalDateTime timeStamp2LocalDateTime(long timestamp){
        return LocalDateTime.ofEpochSecond(timestamp/1000,0,ZoneOffset.ofHours(8));
    }

    /**
     * @Description 时间戳转换为LocalDate
     * @Author Chongwen.jiang
     * @Date 2019/6/13 15:03
     * @ModifyDate 2019/6/13 15:03
     * @Params [timestamp]
     * @Return java.time.LocalDateTime
     */
    public static LocalDate timeStamp2LocalDate(long timestamp){
        return date2LocalDate(localDateTime2Date(LocalDateTime.ofEpochSecond(timestamp/1000,0,ZoneOffset.ofHours(8))));
    }

    /**
     * @Description 获取两个时间相差小时数
     * @Author Chongwen.jiang
     * @Date 2019/6/15 10:23
     * @ModifyDate 2019/6/15 10:23
     * @Params [fromDate, toDate]
     * @Return int
     */
    public static int compareDate(String fromDate, String toDate) {
        int  hours = 0;
        try {
            SimpleDateFormat simpleFormat = new SimpleDateFormat(DATE_SHORTTIME_PATTERN);
            long to = simpleFormat.parse(toDate).getTime();
            long from = simpleFormat.parse(fromDate).getTime();
            hours = (int) ((to - from)/(1000 * 60 * 60));
            System.out.println("QQ"+hours);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return hours;
    }

    /**
     * @Description 获取两个时间相差天数
     * @Author Chongwen.jiang
     * @Date 2019/6/15 10:25
     * @ModifyDate 2019/6/15 10:25
     * @Params [startDate, endDate]
     * @Return long
     */
    public static long diffDays (LocalDate startDate, LocalDate endDate) {
        return endDate.toEpochDay() - startDate.toEpochDay();
    }




}

发布了36 篇原创文章 · 获赞 4 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/weixin_41205148/article/details/98075031
今日推荐