package com.live.test.api.core.date.ju;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具類 基於 java.util.Calendar
*
* @author live
* @2020年2月19日 @下午
*/
public class DateUtil {
/**
* yyyy_MM_dd
*/
public static final String FORMAT_yyyy_MM_dd = "yyyy-MM-dd";
/**
* yyyy-MM
*/
public static final String FORMAT_yyyy_MM = "yyyy-MM";
/**
* 1秒 的毫秒數
*/
public static final long MILLISECOND_OF_SECOND = 1000;
/**
* 1分鐘 的毫秒數
*/
public static final long MILLISECOND_OF_MINUTE = MILLISECOND_OF_SECOND * 60;
/**
* 1小時 的毫秒數
*/
public static final long MILLISECOND_OF_HOUR = MILLISECOND_OF_MINUTE * 60;
/**
* 1天 的毫秒數
*/
public static final long MILLISECOND_OF_DAY = MILLISECOND_OF_HOUR * 24;
/**
* 獲取當前時刻 的時間戳
*
* @return 毫秒
*/
public static long getNowMillis() {
return System.currentTimeMillis();
}
/**
* 獲取當前時刻 距離 次日0點0分0秒 的毫秒數
*
* @return 毫秒
*/
public static long getNowToZeroMillis() {
return getZeroMillis() - getNowMillis();
}
/**
* 獲取 次日0點0分0秒 的時間戳
*
* @return 毫秒
*/
public static long getZeroMillis() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 1);// 加1表示明天的0點
calendar.set(Calendar.HOUR_OF_DAY, 0);// 24小時制
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
/**
*
*/
public static String format = "yyyy-MM-dd HH:mm:ss";
/**
* 判斷兩個日期是否同日
*
* @param date1
* @param date2
* @return
*/
public static boolean isEqualDay(Date date1, Date date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
int i = calendar1.get(Calendar.DAY_OF_YEAR);
int i2 = calendar2.get(Calendar.DAY_OF_YEAR);
return i == i2;
}
/**
* 判斷兩個日期是否同周
*
* @param date1
* @param date2
* @return
*/
public static boolean isEqualWeek(Date date1, Date date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
int week1 = calendar1.get(Calendar.WEEK_OF_MONTH);
int week2 = calendar2.get(Calendar.WEEK_OF_MONTH);
return isEqualMonth(date1, date2) && week1 == week2;
}
/**
* 判斷兩個日期是否同月
*
* @param date1
* @param date2
* @return
*/
public static boolean isEqualMonth(Date date1, Date date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR)
&& calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
}
/**
* 獲取指定年月的第一天
*
* @param year
* @param month
* @return
*/
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
int firstDay = cal.getMinimum(Calendar.DATE);
cal.set(Calendar.DAY_OF_MONTH, firstDay);
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(cal.getTime());
}
/**
* 獲取指定年月的最後一天
*
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
int lastDay = cal.getActualMaximum(Calendar.DATE);
cal.set(Calendar.DAY_OF_MONTH, lastDay);
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(cal.getTime());
}
public static String coverToString(Date date, String format) {
return new SimpleDateFormat(format).format(date);
}
/**
* Date對象轉爲: 年月日
*
* @param date
* @return
*/
public static String coverToDay(Date date) {
return coverToString(date, FORMAT_yyyy_MM_dd);
}
/**
* Date對象轉爲: 年月
*
* @param date
* @return
*/
public static String coverToMonth(Date date) {
return coverToString(date, FORMAT_yyyy_MM);
}
}
代碼地址: