代码:
public class DateTimeUtil {
private static final Logger logger = LoggerFactory.getLogger(DateTimeUtil.class);
public static final String STANDER_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String STANDER_SHORT_FORMAT = "yyyy-MM-dd";
public static Date addDuration(Date date, Duration duration) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.add(Calendar.SECOND, (int) duration.getSeconds());
return ca.getTime();
}
public static String dateFormat(Date date) {
if (null == date) {
return "";
}
DateFormat dateFormat = new SimpleDateFormat(STANDER_FORMAT);
return dateFormat.format(date);
}
public static String dateShortFormat(Date date) {
if (null == date) {
return "";
}
DateFormat dateFormat = new SimpleDateFormat(STANDER_SHORT_FORMAT);
return dateFormat.format(date);
}
public static Date parse(String dateStr, String format) {
try {
return new SimpleDateFormat(format).parse(dateStr);
} catch (ParseException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Date getMonthStartDay() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
String dateStr = formatter.format(cale.getTime());
return parse(dateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMonthEndDay() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
String dateStr = formatter.format(cale.getTime());
return parse(dateStr, STANDER_FORMAT);
}
public static List<String> MothStartToNowFormat() {
Date startTime = getMonthStartDay();
Calendar nowCalendar = Calendar.getInstance();
nowCalendar.setTime(new Date());
int mothDayCount = nowCalendar.get(Calendar.DAY_OF_MONTH);
List<String> mothDays = new ArrayList<>(mothDayCount);
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startTime);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
mothDays.add(formatter.format(startTime));
for (int i = 0; i < mothDayCount - 1; i++) {
startCalendar.add(Calendar.DATE, 1);
Date end_date = startCalendar.getTime();
mothDays.add(formatter.format(end_date));
}
return mothDays;
}
public static List<String> MothDay() {
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(getMonthEndDay());
int endMothDay = endCalendar.get(Calendar.DAY_OF_MONTH);
List<String> list = new ArrayList<>(endMothDay);
for (int i = 1; i <= endMothDay; i++) {
list.add(String.valueOf(i));
}
return list;
}
}
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);
}
}
/**
* 日期型字符串转化为日期 格式
*/
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 int differentDaysByMillisecond(Date date1, Date date2)
{
return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
}
/**
* 计算两个时间差
*/
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 + "分钟";
}
//ManagementFactory 类是一种工厂类,用于获取 Java 平台的管理 Bean。此类由静态方法组成,每种静态方法都会返回一个或多个表示 Java 虚拟机组件的管理接口的平台 MXBean。
使用:
System.out.println(DateTimeUtil.dateShortFormat(user.getBirthDay())+"时间");
结果: