仅记录一下
// 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();
}
}