You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.2 KiB
154 lines
4.2 KiB
/** |
|
* Copyright (C) 2018-2022 |
|
* All rights reserved, Designed By www.yixiang.co |
|
|
|
*/ |
|
package co.yixiang.utils; |
|
|
|
import org.apache.commons.lang3.time.DateFormatUtils; |
|
|
|
import java.lang.management.ManagementFactory; |
|
import java.text.ParseException; |
|
import java.text.SimpleDateFormat; |
|
import java.util.Calendar; |
|
import java.util.Date; |
|
|
|
/** |
|
* 时间工具类 |
|
*/ |
|
public class DateUtils extends org.apache.commons.lang3.time.DateUtils { |
|
public static String YYYY = "yyyy"; |
|
|
|
public static String YYYY_MM = "yyyy-MM"; |
|
|
|
public static String YYYY_MM_DD = "yyyy-MM-dd"; |
|
|
|
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; |
|
|
|
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; |
|
|
|
private static String[] parsePatterns = { |
|
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", |
|
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", |
|
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
|
|
|
/** |
|
* 获取当前Date型日期 |
|
* |
|
* @return Date() 当前日期 |
|
*/ |
|
public static Date getNowDate() { |
|
return new Date(); |
|
} |
|
|
|
/** |
|
* 获取当前日期, 默认格式为yyyy-MM-dd |
|
* |
|
* @return String |
|
*/ |
|
public static String getDate() { |
|
return dateTimeNow(YYYY_MM_DD); |
|
} |
|
|
|
public static final String getTime() { |
|
return dateTimeNow(YYYY_MM_DD_HH_MM_SS); |
|
} |
|
|
|
public static final String dateTimeNow() { |
|
return dateTimeNow(YYYYMMDDHHMMSS); |
|
} |
|
|
|
public static final String dateTimeNow(final String format) { |
|
return parseDateToStr(format, new Date()); |
|
} |
|
|
|
public static final String dateTime(final Date date) { |
|
return parseDateToStr(YYYY_MM_DD, date); |
|
} |
|
|
|
public static final String parseDateToStr(final String format, final Date date) { |
|
return new SimpleDateFormat(format).format(date); |
|
} |
|
|
|
public static final Date dateTime(final String format, final String ts) { |
|
try { |
|
return new SimpleDateFormat(format).parse(ts); |
|
} catch (ParseException e) { |
|
throw new RuntimeException(e); |
|
} |
|
} |
|
|
|
/** |
|
* 日期路径 即年/月/日 如2018/08/08 |
|
*/ |
|
public static final String datePath() { |
|
Date now = new Date(); |
|
return DateFormatUtils.format(now, "yyyy/MM/dd"); |
|
} |
|
|
|
/** |
|
* 日期路径 即年/月/日 如20180808 |
|
*/ |
|
public static final String dateTime() { |
|
Date now = new Date(); |
|
return DateFormatUtils.format(now, "yyyyMMdd"); |
|
} |
|
|
|
/** |
|
* 日期型字符串转化为日期 格式 |
|
*/ |
|
public static Date parseDate(Object str) { |
|
if (str == null) { |
|
return null; |
|
} |
|
try { |
|
return parseDate(str.toString(), parsePatterns); |
|
} catch (ParseException e) { |
|
return null; |
|
} |
|
} |
|
|
|
/** |
|
* 获取服务器启动时间 |
|
*/ |
|
public static Date getServerStartDate() { |
|
long time = ManagementFactory.getRuntimeMXBean().getStartTime(); |
|
return new Date(time); |
|
} |
|
|
|
/** |
|
* 计算两个时间差 |
|
*/ |
|
public static String getDatePoor(Date endDate, Date nowDate) { |
|
long nd = 1000 * 24 * 60 * 60; |
|
long nh = 1000 * 60 * 60; |
|
long nm = 1000 * 60; |
|
// long ns = 1000; |
|
// 获得两个时间的毫秒时间差异 |
|
long diff = endDate.getTime() - nowDate.getTime(); |
|
// 计算差多少天 |
|
long day = diff / nd; |
|
// 计算差多少小时 |
|
long hour = diff % nd / nh; |
|
// 计算差多少分钟 |
|
long min = diff % nd % nh / nm; |
|
// 计算差多少秒//输出结果 |
|
// long sec = diff % nd % nh % nm / ns; |
|
return day + "天" + hour + "小时" + min + "分钟"; |
|
} |
|
|
|
/** |
|
* 秒转换为指定格式的日期 |
|
* |
|
* @param second |
|
* @return |
|
*/ |
|
public static String secondToDate(long second) { |
|
Calendar calendar = Calendar.getInstance(); |
|
calendar.setTimeInMillis(second * 1000);//转换为毫秒 |
|
Date date = calendar.getTime(); |
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); |
|
String dateString = format.format(date); |
|
return dateString; |
|
} |
|
}
|
|
|