package com.mmhsy.util;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* @author David
* @Description: LocalDateUtil工具类
* @date 2020/6/2 7:07 下午
*/
public class LocalDateUtil {
/** 格式 :yyyy-MM-dd HH:mm:ss */
public static final String DATEFORMAT_STR_001 = "yyyy-MM-dd HH:mm:ss";
/** 格式 :yyyy-MM-dd */
public static final String DATEFORMAT_STR_002 = "yyyy-MM-dd";
/** 格式 :MM-dd */
public static final String DATEFORMAT_STR_003 = "MM-dd";
/** 格式 :HH:mm:ss */
public static final String DATEFORMAT_STR_004 = "HH:mm:ss";
/** 格式 :HH:mm */
public static final String DATEFORMAT_STR_005 = "HH:mm";
/** 格式 :yyyyMMddHHmmss */
public static final String DATEFORMAT_STR_011 = "yyyyMMddHHmmss";
/** 格式 :yyyyMMdd */
public static final String DATEFORMAT_STR_012 = "yyyyMMdd";
/** 格式 :yyyyMM */
public static final String DATEFORMAT_STR_013 = "yyyyMM";
/** 格式 :HHmmss */
public static final String DATEFORMAT_STR_014 = "HHmmss";
/** 格式 :yyyyMMddHH:mm:ss */
public static final String DATEFORMAT_STR_015 = "yyyyMMdd HH:mm:ss";
/** 格式 :yyyyMMddHHmmssSSS */
public static final String DATEFORMAT_STR_016 = "yyyyMMddHHmmssSSS";
/** 格式 :yyyyMMddHHmm */
public static final String DATEFORMAT_STR_017 = "yyyyMMddHHmm";
/** 格式 :yyyy年MM月dd日 HH时mm分ss秒 */
public static final String DATEFORMAT_STR_021 = "yyyy年MM月dd日 HH时mm分ss秒";
/** 格式 :yyyy年MM月dd日 */
public static final String DATEFORMAT_STR_022 = "yyyy年MM月dd日";
/** 格式 :MM月dd日 hh:mm */
public static final String DATEFORMAT_STR_023 = "MM月dd日 hh:mm";
/** 格式 :yyyy/MM/dd */
public static final String DATEFORMAT_STR_024 = "yyyy/MM/dd";
/** 格式 :yyyy-MM */
public static final String DATEFORMAT_STR_025 = "yyyy-MM";
/** 格式 :MM月dd日 */
public static final String DATEFORMAT_STR_026 = "MM月dd日";
/** 格式 :yyyy-MM-dd HH:mm */
public static final String DATEFORMAT_STR_027 = "yyyy-MM-dd HH:mm";
/** 格式 :yyyy */
public static final String DATEFORMAT_STR_028 = "yyyy";
/** 格式 :yyyy/MM */
public static final String DATEFORMAT_STR_029 = "yyyy/MM";
/** 格式 :yyyyMMddHH */
public static final String DATEFORMAT_STR_030 = "yyyyMMddHH";
/**
* 将long类型的timestamp转为LocalDateTime
*
* @param timestamp
* @return
*/
public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zone = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zone);
}
/**
* 将LocalDateTime转为long类型的timestamp
*
* @param localDateTime
* @return
*/
public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return instant.toEpochMilli();
}
/**
* 获取该时间周的 周一
* @return
*/
public static LocalDateTime getMondayOfWeek(LocalDateTime localDateTime) {
return localDateTime.with(DayOfWeek.MONDAY);
}
/**
* 获取该时间周的 周末
* @return
*/
public static LocalDateTime getSundayOfWeek(LocalDateTime localDateTime) {
return localDateTime.with(DayOfWeek.SUNDAY);
}
/**
* 获取该时间月的第一天
* @return
*/
public static LocalDateTime getFirstDayOfMonth(LocalDateTime localDateTime) {
return localDateTime.with(TemporalAdjusters.firstDayOfMonth());
}
/**
* 获取该时间月的第一天
* @return
*/
public static LocalDateTime getLastDayOfCurrentMonth(LocalDateTime localDateTime) {
return localDateTime.with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 获取该时间季度第一天
* @return
*/
public static LocalDate getFirstDayOfQuarter(LocalDateTime localDateTime) {
Month month = localDateTime.getMonth();
Month firstMonthOfQuarter = month.firstMonthOfQuarter();
return LocalDate.of(localDateTime.getYear(), firstMonthOfQuarter, 1);
}
/**
* 获取该时间季度最后一天
* @return
*/
public static LocalDate getLastDayOfQuarter(LocalDateTime localDateTime) {
Month month = localDateTime.getMonth();
Month firstMonthOfQuarter = month.firstMonthOfQuarter();
Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
LocalDate date = LocalDate.of(localDateTime.getYear(), endMonthOfQuarter, 1);
return date.with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 获取该时间年的第一天
* @return
*/
public static LocalDateTime getFirstDayOfYear(LocalDateTime localDateTime){
return localDateTime.with(TemporalAdjusters.firstDayOfYear());
}
/**
* 获取该时间年的最后一天
* @return
*/
public static LocalDateTime getLastDayOfYear(LocalDateTime localDateTime){
return localDateTime.with(TemporalAdjusters.lastDayOfYear());
}
/**
* localDate转date
*
* @param date
* @return
*/
public static Date convertDate(LocalDate date) {
ZonedDateTime zonedDateTime = date.atStartOfDay(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant());
}
/**
* date 转localDate
* @param date
* @return
*/
public static LocalDate convertLocalDate(Date date){
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
/**
* localDateTime 转date
* @param dateTime
* @return
*/
public static Date convertDate(LocalDateTime dateTime){
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = dateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
/**
* date转localDateTime
* @param date
* @return
*/
public static LocalDateTime convertLocalDateTime(Date date){
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDateTime();
}
/**
* 格式化
*
* @param dateTime
* @param pattern
* @return
*/
public static String format(LocalDateTime dateTime, String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
return dtf.format(dateTime);
}
/**
* 格式化日期
* @param date
* @param pattern
* @return
*/
public static String format(LocalDate date, String pattern) {
DateTimeFormatter format = DateTimeFormatter.ofPattern(pattern);
return format.format(date);
}
public static void main(String[] args) {
LocalDateTime time = LocalDateTime.now().withSecond(0).withMinute(0).withNano(0);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS");
LocalDateTime begin =time.plusDays(-2);
LocalDateTime end =time;
long gap = end.toLocalDate().toEpochDay() - begin.toLocalDate().toEpochDay() +1;
System.out.println(format.format(begin));
System.out.println(format.format(end));
begin = begin.plusDays(-gap);
end = end.plusDays(-gap);
System.out.println(format(begin,DATEFORMAT_STR_021));
System.out.println(format(end,DATEFORMAT_STR_021));
LocalDateTime t = LocalDateTime.now();
LocalDateTime dateTime =getDateTimeOfTimestamp(System.currentTimeMillis());
System.out.println(format.format(t));
System.out.println(format.format(dateTime));
}
}
网友评论