package com.heaven.util;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* @version v1.0
* @ProjectName:
* @ClassName: TimeUtils
* @Description: JAVA 时间工具
* @Date: 2021/3/10 下午2:39
*/
public class TimeUtils {
@Autowired
private CalendarService calendarService;
public static final String Y_D_R = "yyyy-MM-dd";
public static final String Y_D_R_H_M = "yyyy-MM-dd HH:mm";
public static final String Y_D_R_H_M_S = "yyyy-MM-dd HH:mm:ss";
public static final String YDR = "yyyyMMdd";
public static final String YDRHMS = "yyyyMMddHHmmss";
public static final String Y_D_R_0_0_0 = "yyyy-MM-dd 00:00:00";
public static final String Y_D_R_23_59_59 = "yyyy-MM-dd 23:59:59";
public static final String H_M_S = "HH:mm:ss";
public static final String HMS = "HHmmss";
/**
* 获取当前年数值
*
* @return 年 2021
*/
public static int queryCurrentYear() {
LocalDate localDate = LocalDate.now();
return localDate.getYear();
}
/**
* 当前月
*
* @return 月 12
*/
public static int queryCurrentMonth() {
LocalDate localDate = LocalDate.now();
return localDate.getMonthValue();
}
/**
* 获取当前日
*
* @return 几号 10号
*/
public static int queryCurrentDay() {
LocalDate localDate = LocalDate.now();
return localDate.getDayOfMonth();
}
/**
* 获取今天是周几
*
* @return 4
*/
public static int queryCurrentWeekDay() {
LocalDate localDate = LocalDate.now();
return localDate.getDayOfWeek().getValue();
}
/**
* 判断今天是生日
*
* @return
*/
public static Boolean todayIsBirthday(Date dateOfBirth) {
if (null == dateOfBirth) {
return null;
}
LocalDate dateOfBirthLocalDate = dateToLocalDate(dateOfBirth);
MonthDay birthday = MonthDay.of(dateOfBirthLocalDate.getMonth(), dateOfBirthLocalDate.getDayOfMonth());
MonthDay currentMonthDay = MonthDay.from(LocalDate.now());
return currentMonthDay.equals(birthday);
}
/**
* 两个时间相差几天
*
* @param date1 时间1
* @param date2 时间2
* @return
*/
public static int dateDiffDay(Date date1, Date date2) {
LocalDate l1 = dateToLocalDate(date1);
LocalDate l2 = dateToLocalDate(date2);
Period between = Period.between(l1, l2);
return between.getDays();
}
/**
* 两个时间相差月数
*
* @param date1 时间1
* @param date2 时间2
* @return
*/
public static int dateDiffMonth(Date date1, Date date2) {
LocalDate l1 = dateToLocalDate(date1);
LocalDate l2 = dateToLocalDate(date2);
Period between = Period.between(l1, l2);
return between.getMonths();
}
/**
* 两个时间相差年数
*
* @param date1 时间1
* @param date2 时间2
* @return
*/
public static int dateDiffYear(Date date1, Date date2) {
LocalDate l1 = dateToLocalDate(date1);
LocalDate l2 = dateToLocalDate(date2);
Period between = Period.between(l1, l2);
return between.getYears();
}
/**
* Date转换LocalDate
*
* @param date 时间
* @return
*/
public static LocalDate dateToLocalDate(Date date) {
if (null == date) {
return null;
}
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
/**
* LocalDate 转换Date
*
* @param localDate 时间
* @return
*/
public static Date LocalDateToDate(LocalDate localDate) {
if (null == localDate) {
return null;
}
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
/**
* 格式
*
* @param localDate 时间
* @return
*/
public static String format(LocalDate localDate, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return localDate.format(formatter);
}
/**
* date转换LocalDateTime
*
* @param date 时间
* @return
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
if (null == date) {
return null;
}
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
/**
* LocalDateTime转换Date
*
* @param localDateTime 时间
* @return
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
if (null == localDateTime) {
return null;
}
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
/**
* LocalDate 转换Date
*
* @param localDateTime 时间
* @return
*/
public static String format(LocalDateTime localDateTime, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return localDateTime.format(formatter);
}
/**
* date转换LocalDateTime
*
* @param localDateTime 时间
* @return
*/
public static Date dateToLocalDateTime(LocalDateTime localDateTime) {
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
/**
* date转换LocalTime
*
* @param date 时间
* @return
*/
public static LocalTime dateToLocalTime(Date date) {
if (null == date) {
return null;
}
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
}
/**
* 格式化
*
* @param localTime 时间
* @return
*/
public static String format(LocalTime localTime, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return localTime.format(formatter);
}
/**
* 获取当天时分秒总和
*
* @param date
* @return
*/
public static long getTimeInDay(Date date) {
if (Objects.isNull(date)) {
return -1;
}
return (date.getHours() * 60 + date.getMinutes()) * 60 + date.getSeconds();
}
/**
* 获取前两天时分秒总和
*
* @param date
* @return
*/
public static long getTimeInNextDay(Date date) {
if (Objects.isNull(date)) {
return -1;
}
return getTimeInDay(date) + 24 * 60 * 60;
}
/**
* 判断一个日期是否在两个日期之间。
* @param date
* @param startDate
* @param endDate
* @return
*/
public static boolean isBetween(Date date,Date startDate,Date endDate){
return date.after(startDate) && date.before(endDate);
}
@Test
public void test() {
/* List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
for (int i = 0; i < LocalDate.now().lengthOfYear(); i++) {
Map<String, Object> map = new HashMap<>();
map.put(LocalDate.of(2021, 01, 01).plusDays(i).toString(), 1);
list.add(map);
}
String s = JSON.toJSONString(list);
List<Map> maps = JSON.parseArray(s, Map.class);
map1.put(LocalDate.of(2021, 01, 01).toString(), 1);
Map map2 = maps.stream().filter(map -> map.keySet().contains(LocalDate.now().toString())).findFirst().orElse(null);
System.out.println("map2==" + map2);
int o = (int) map2.get(LocalDate.now().toString());
System.out.println(o);
System.out.println(map1);
System.out.println(maps);
System.out.println(s);*/
Date date = TimeUtils.LocalDateToDate(LocalDate.now());
System.out.println(date);
ResultMsg < WorkCalenDar > workCalenDarByDay = calendarService.getWorkCalenDarByDay(date);
System.out.println(workCalenDarByDay);
}
}
LocalDate、LocalDateTime、LocalTime 、Date 转换工具类
最新推荐文章于 2023-12-29 15:53:37 发布