public final static String patternTime1 = "yyyy-MM-dd HH:mm:ss";
public final static String patternTime2 = "yyyy-MM-dd";
public final static String patternTime3 = "MM-dd";
public final static String patternTime4 = "MM-dd HH:mm";
public final static String patternTime5 = "yyyy-MM";
public final static String patternTime6 = "HH:mm";
public final static String patternTime7 = "M月";
public final static String patternTime8 = "yyyy-MM-dd HH";
public final static String patternTime9 = "yyyy-MM-dd HH:mm";
public final static String patternTime10 = "yyyy/MM/dd HH:mm:ss";
public final static String Replace = "0";
public final static String SUFFIX = ":00";
/**
* 获取指定日期
*
* @param patternTime 时间格式
* @return 返回时间
*/
public static String getNowTime(String patternTime, int number) {
return LocalDateTime.now().plusDays(number).format(DateTimeFormatter.ofPattern(patternTime));
}
/**
* 获取当天之前的几天日期,不包括当天
*
* @param number 日期数目
* @return 返回日期数组
*/
public static List<String> takeDateByNumberForShow(int number, String pattern) {
List<String> dateList = new ArrayList<>();
DateFormat simpleDateFormat = new SimpleDateFormat(pattern);
for (int i = number; i > 0; i--) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -i);
String itemDate = simpleDateFormat.format(calendar.getTime());
dateList.add(itemDate);
}
return dateList;
}
/**
* 获取当天之前的几天日期,包含当天
*
* @param number 日期数目
* @return 返回日期数组
*/
public static List<String> takeCurrentDateByNumber(int number, String pattern) {
List<String> dateList = new ArrayList<>();
DateFormat simpleDateFormat = new SimpleDateFormat(pattern);
for (int i = number; i >= 0; i--) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -i);
String itemDate = simpleDateFormat.format(calendar.getTime());
dateList.add(itemDate);
}
return dateList;
}
/**
* 获取距离当前月的指定月份数
*/
public static List<String> takeMonth(int mon, String pattern) {
List<String> list = new ArrayList<>();
for (int i = mon; i >= 0; i--) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -i);
Date date = c.getTime();
list.add(sdf.format(date));
}
return list;
}
// <E> ArrayList<E>
/**
* 获取距离当前月的指定月份
*/
public static String takeSpecifiedMonth(int mon, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -mon);
Date date = c.getTime();
return sdf.format(date);
}
/**
* 获取月份的时间间隔 {2021-05-01,2021-06-01},{2021-06-01,2021-07-01}
*/
public static LinkedHashMap<String, String> getMonthIntervalTimes() {
LinkedHashMap<String, String> map = new LinkedHashMap<>();
List<String> months = takeMonth(5, patternTime5);
for (int i = 0; i < months.size() - 1; i++) {
map.put(months.get(i), months.get(i + 1));
}
return map;
}
/**
* 获取距离当前时间多少分钟
*/
public static String getPushMinutesTimes(int minutes) {
return LocalDateTime.now().plusMinutes(minutes).format(DateTimeFormatter.ofPattern(DateUtils.patternTime1));
}
/**
* 获取当前时间以10分钟为间隔的多个时间 eg: 23:10 23:20 23:30
*/
public static List<String> getTenIntervalTimes(int num, String pattern, String suffix) {
List<String> list = new ArrayList<>();
for (int i = num; i >= 0; i--) {
LocalDateTime dateTime = LocalDateTimeUtil.offset(LocalDateTime.now(), -10L * i, ChronoUnit.MINUTES);
String str = dateTime.format(DateTimeFormatter.ofPattern(pattern));
StringBuilder sb = new StringBuilder(str);
sb.replace(sb.length() - 1, sb.length(), Replace);
if (suffix == null) {
list.add(sb.toString());
} else {
list.add(dateTime.format(DateTimeFormatter.ofPattern(patternTime2)) + " " + sb.toString() + suffix);
}
}
return list;
}
/**
* 获取10分钟的时间间隔 {2021-05-23 23:10=2021-05-23 23:20}
*/
public static LinkedHashMap<String, String> getTenIntervalTimes() {
LinkedHashMap<String, String> map = new LinkedHashMap<>();
List<String> intervalTimes = getTenIntervalTimes(5, patternTime6, SUFFIX);
for (int i = 0; i < intervalTimes.size() - 1; i++) {
map.put(intervalTimes.get(i), intervalTimes.get(i + 1));
}
return map;
}
/**
* 获取指定日期开始时间 xxxx-xx-xx 00:00:00
*
* @param number 离本日天数
*/
public static String dayStart(int number) {
return LocalDateTime.of(LocalDate.now().plusDays(number), LocalTime.MIN)
.format(DateTimeFormatter.ofPattern(patternTime1));
}
/**
* 获取指定日期结束时间 xxxx-xx-xx 23:59:59
*/
public static String dayEnd(int number) {
return LocalDateTime.of(LocalDate.now().plusDays(number), LocalTime.MAX)
.format(DateTimeFormatter.ofPattern(patternTime1));
}
/**
* 日期格式化
*/
public static String dateToString(Date date, String pattern) {
return new SimpleDateFormat(pattern).format(date);
}
/**
* 日期格式转换成 Y/M/D/00:00:00格式
*/
public static Date formatYMDTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.patternTime2);
try {
String dateStr = dateToString(date, DateUtils.patternTime2);
Date parse = sdf.parse(dateStr, new ParsePosition(0));
return parse;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 日期增加count天
*/
public static Date addCountByDay(Date date, Integer count) {
try {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, count);
return cal.getTime();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static Long takeStartTime(Calendar todayStart) {
todayStart.set(Calendar.HOUR_OF_DAY, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 1);
todayStart.set(Calendar.MILLISECOND, 1);
return todayStart.getTime().getTime();
}
private static Long takeEndTime(Calendar todayStart) {
todayStart.set(Calendar.HOUR_OF_DAY, 23);
todayStart.set(Calendar.MINUTE, 59);
todayStart.set(Calendar.SECOND, 59);
todayStart.set(Calendar.MILLISECOND, 999);
return todayStart.getTime().getTime();
}
/**
* 非标准时间格式化
*/
public static String formatDtime(String time) {
String[] ts = time.split("T");
String sub = ts[1].substring(0, 8);
return ts[0] + " " + sub;
}
/**
* 非标准时间格式化
*/
public static Date formatDate(String time) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String[] ts = time.split("T");
String sub = ts[1].substring(0, 8);
return sdf.parse(ts[0] + " " + sub);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String formateTimeStamp(Long time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date(Long.parseLong(String.valueOf(time))));
}
// 获取第二天整点
public static Date nextDay(int i) {
Date date = formatYMDTime(new Date());
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, i);
return calendar.getTime();
}
return null;
}
/**
* 时间戳转换成时间
*/
public static String timeStampToTime(String s,String pattern) {
long lt = new Long(s);
return timeStampToTime(lt, pattern);
}
/**
* 时间戳转换成时间
*/
public static String timeStampToTime(Long s,String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date date = new Date(s);
return sdf.format(date);
}
public static String dateToTimeStamp(String data) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(data);
return String.valueOf(date.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取指定小时时间 21:00
*/
public static String getBeforeByHourTime(int hour) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:00");
//(1)获取当前时间
LocalDateTime date = LocalDateTime.now();
//(2)获取当前时间的前几小时时间
LocalDateTime localDateTime = date.minusHours(hour);
return dateTimeFormatter.format(localDateTime);
}
public static Date takeAssignDateHour(Integer num,String pattern) {
if (num == null || num == 0) {
return new Date();
}
SimpleDateFormat df = new SimpleDateFormat(pattern);
try {
String res = takeStrAssignDateHour(num, pattern);
return df.parse(res);
} catch (Exception e) {
e.printStackTrace();
}
return new Date();
}
public static String takeStrAssignDateHour(Integer num,String pattern){
SimpleDateFormat df = new SimpleDateFormat(pattern);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + num);
return df.format(calendar.getTime());
}
public static Date strToDate(String date, String pattern){
try {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.parse(date);
}catch (Exception e){
e.printStackTrace();
}
return new Date();
}
public static String strToPatternStr(String date,String sourcePattern,String targetPattern){
try {
SimpleDateFormat df = new SimpleDateFormat(sourcePattern);
SimpleDateFormat df2 = new SimpleDateFormat(targetPattern);
Date parse = df.parse(date);
return df2.format(parse);
}catch (Exception e){
e.printStackTrace();
}
return getNowTime(targetPattern,0);
}