import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 时间工具类
*
* @author sqa
*/
public class DateUtil {
public static final String FULL_TIME_PATTERN = "yyyyMMddHHmmss";
public static final String FULL_TIME_SPLIT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String CST_TIME_PATTERN = "EEE MMM dd HH:mm:ss zzz yyyy";
public static final String MILLISECOND = "YYYYMMddHHmmssSSS";
/**
* 格式化时间,格式为 yyyyMMddHHmmss
*
* @param localDateTime LocalDateTime
* @return 格式化后的字符串
*/
public static String formatFullTime(LocalDateTime localDateTime) {
return formatFullTime(localDateTime, FULL_TIME_PATTERN);
}
/**
* 根据传入的格式,格式化时间
*
* @param localDateTime LocalDateTime
* @param format 格式
* @return 格式化后的字符串
*/
public static String formatFullTime(LocalDateTime localDateTime, String format) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
return localDateTime.format(dateTimeFormatter);
}
/**
* 根据传入的格式,格式化时间
*
* @param date Date
* @param format 格式
* @return 格式化后的字符串
*/
public static String getDateFormat(Date date, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, Locale.CHINA);
return simpleDateFormat.format(date);
}
/**
* 格式化 CST类型的时间字符串
*
* @param date CST类型的时间字符串
* @param format 格式
* @return 格式化后的字符串
* @throws ParseException 异常
*/
public static String formatCstTime(String date, String format) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(CST_TIME_PATTERN, Locale.US);
Date usDate = simpleDateFormat.parse(date);
return getDateFormat(usDate, format);
}
/**
* 格式化 Instant
*
* @param instant Instant
* @param format 格式
* @return 格式化后的字符串
*/
public static String formatInstant(Instant instant, String format) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
return localDateTime.format(DateTimeFormatter.ofPattern(format));
}
/**
* 判断当前时间是否在指定时间范围
*
* @param from 开始时间
* @param to 结束时间
* @return 结果
*/
public static boolean between(LocalTime from, LocalTime to) {
LocalTime now = LocalTime.now();
return now.isAfter(from) && now.isBefore(to);
}
/**
* 获取几天后的时间
*
* @param day
* @return
*/
public static Date getNewDay(Integer day) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(new Date());
calendar.add(calendar.DATE, day);
return calendar.getTime();
}
//获取新分钟计算的时间
public static Date getNewMinute(Integer minute) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(new Date());
calendar.add(calendar.MINUTE, minute);
return calendar.getTime();
}
public static Date getNewMinute(Date date, Integer minute) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.MINUTE, minute);
return calendar.getTime();
}
public static Date getNewDay(Date date, Integer day) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE, day);
return calendar.getTime();
}
/**
* 获得当天0点时间
*
* @return
*/
public static Date getTimesmorning() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获得当天24点时间
*
* @return
*/
public static Date getTimesnight() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 24);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获得本周一0点时间
*
* @return
*/
public static Date getTimesWeekmorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return cal.getTime();
}
/**
* 获得本周日24点时间
*
* @return
*/
public static Date getTimesWeeknight() {
Calendar cal = Calendar.getInstance();
cal.setTime(getTimesWeekmorning());
cal.add(Calendar.DAY_OF_WEEK, 7);
return cal.getTime();
}
/**
* 获得本月第一天0点时间
*
* @return
*/
public static Date getTimesMonthmorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
/**
* 获得本月最后一天24点时间
*
* @return
*/
public static Date getTimesMonthnight() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 24);
return cal.getTime();
}
/**
* 查询类型转具体时间start
* 1:当天
* 2:本周
* 3:本月
* @param findType
* @return
*/
public static String getStartTime(int findType){
Date date = null;
switch (findType){
case 1: date = getTimesmorning();
break;
case 2: date = getTimesWeekmorning();
break;
case 3: date = getTimesMonthmorning();
break;
default: date = null;
break;
}
if(date == null){
return null;
}
return getDateFormat(date, "yyyy-MM-dd");
}
/**
* 查询类型转具体时间End
* 1:当天
* 2:本周
* 3:本月
* @param findType
* @return
*/
public static String getEndTime(int findType){
Date date = null;
switch (findType){
case 1: date = getTimesnight();
break;
case 2: date = getTimesWeeknight();
break;
case 3: date = getTimesMonthnight();
break;
default: date = null;
break;
}
if(date == null){
return null;
}
return getDateFormat(date, "yyyy-MM-dd");
}
}
DateUtil 时间工具类
最新推荐文章于 2023-09-28 09:43:39 发布