Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.soento.core.util.DateUtil Maven / Gradle / Ivy
package com.soento.core.util;
import com.soento.core.enums.DateFormat;
import com.soento.core.enums.DateUnit;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 日期工具类
*
* @author soento
*/
public class DateUtil {
private DateUtil() {
}
/**
* 将日期转换为yyyy-MM-dd HH:mm:ss SSS的字符串
*
* @param date 日期
* @return 转换结果
*/
public static String toString(Date date) {
return toString(date, DateFormat.YYYYMMDDHHMISSMS_DASH);
}
/**
* 将日期转换为指定格式的字符串
*
* @param date 日期
* @param format 日期格式
* @return 转换结果
*/
public static String toString(Date date, DateFormat format) {
return format.instance().format(date);
}
/**
* 转换为Calendar对象
*
* @param date 日期对象
* @return Calendar对象
*/
public static Calendar toCalendar(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
/**
* 转换为Calendar对象
*
* @param millis 时间戳
* @return Calendar对象
*/
public static Calendar toCalendar(long millis) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis);
return cal;
}
/**
* 日期类型转换
*
* @param utilDate 日期
* @return 转换结果
*/
public static java.sql.Date toSQLDate(Date utilDate) {
if (null == utilDate) {
return null;
}
return new java.sql.Date(utilDate.getTime());
}
/**
* 日期类型转换
*
* @param timestamp 日期
* @return 转换结果
*/
public static java.sql.Date toSQLDate(Timestamp timestamp) {
if (null == timestamp) {
return null;
}
return new java.sql.Date(timestamp.getTime());
}
/**
* 日期字符串转换为日期类型
*
* @param strDate 日期
* @return 转换结果
*/
public static Date toDate(String strDate) {
if (null == strDate) {
return null;
}
return toDate(strDate, getDateFormat(strDate));
}
/**
* 日期字符串转换为日期类型
*
* @param strDate 日期
* @param format 日期格式
* @return 转换结果
*/
public static Date toDate(String strDate, DateFormat format) {
try {
if (null == strDate) {
return null;
}
SimpleDateFormat sdf = format.instance();
sdf.setLenient(false);
return sdf.parse(strDate);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 日期字符串转换为日期类型
*
* @param strDate 日期
* @param format 日期格式
* @return 转换结果
*/
public static Date toDate(String strDate, String format) {
try {
if (null == strDate) {
return null;
}
SimpleDateFormat sdf = DateFormat.valueOf(format).instance();
sdf.setLenient(false);
return sdf.parse(strDate);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 日期类型转换
*
* @param sqlDate 日期
* @return 转换结果
*/
public static Timestamp toTimestamp(java.sql.Date sqlDate) {
if (null == sqlDate) {
return null;
}
return new Timestamp(sqlDate.getTime());
}
/**
* 日期类型转换
*
* @param utilDate 日期
* @return 转换结果
*/
public static Timestamp toTimestamp(Date utilDate) {
if (null == utilDate) {
return null;
}
return new Timestamp(utilDate.getTime());
}
/**
* 日期类型转换
*
* @param sqlDate 日期
* @return 转换结果
*/
public static Date toDate(java.sql.Date sqlDate) {
if (null == sqlDate) {
return null;
}
return new Date(sqlDate.getTime());
}
/**
* 日期类型转换
*
* @param timestamp 日期
* @return 转换结果
*/
public static Date toDate(Timestamp timestamp) {
if (null == timestamp) {
return null;
}
return new Date(timestamp.getTime());
}
/**
* 获取日期字符串的日期格式
*
* @param strDate 日期
* @return 转换结果
*/
public static DateFormat getDateFormat(String strDate) {
if (StringUtil.isBlank(strDate)) {
throw new RuntimeException("空字符串不能转换日期格式");
}
int length = strDate.length();
final int num6 = 6;
if (length < num6) {
throw new RuntimeException(strDate + "不是日期类型的字符串");
}
if (CheckUtil.isNumber(strDate)) {
return getDateFormatByNumber(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}$")) {
return getDateFormat12(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}$")) {
return getDateFormat11(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2}$")) {
return getDateFormat10(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$")) {
return getDateFormat9(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}$")) {
return getDateFormat8(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}$")) {
return getDateFormat7(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$")) {
return getDateFormat6(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$")) {
return getDateFormat5(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [0-9]{1,3}$")) {
return getDateFormat4(strDate);
} else if (strDate.matches("^[0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2}\\.[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\\.[0-9]{1,3}$")) {
return getDateFormat3(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [0-9]{1,3}$")) {
return getDateFormat2(strDate);
} else if (strDate.matches("^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\\.[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}\\.[0-9]{1,3}$")) {
return getDateFormat1(strDate);
} else {
throw new RuntimeException(strDate + "不是日期类型的字符串");
}
}
private static DateFormat getDateFormat12(String strDate) {
String[] tmp = strDate.split("\\/");
if (CheckUtil.isMonth(tmp[1])) {
return DateFormat.YYYYMM_SLASH;
} else {
throw new RuntimeException(strDate + "的月份不正确");
}
}
private static DateFormat getDateFormat11(String strDate) {
String[] tmp = strDate.split("-");
if (CheckUtil.isMonth(tmp[1])) {
return DateFormat.YYYYMM_DASH;
} else {
throw new RuntimeException(strDate + "的月份不正确");
}
}
private static DateFormat getDateFormat10(String strDate) {
String[] tmp = strDate.split("\\/");
if (!CheckUtil.isMonth(tmp[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(tmp[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else {
return DateFormat.YYYYMMDD_SLASH;
}
}
private static DateFormat getDateFormat9(String strDate) {
String[] tmp = strDate.split("-");
if (!CheckUtil.isMonth(tmp[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(tmp[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else {
return DateFormat.YYYYMMDD_DASH;
}
}
private static DateFormat getDateFormat8(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("\\/");
String[] hm = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hm[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hm[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else {
return DateFormat.YYYYMMDDHHMI_SLASH;
}
}
private static DateFormat getDateFormat7(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("-");
String[] hm = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hm[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hm[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else {
return DateFormat.YYYYMMDDHHMI_DASH;
}
}
private static DateFormat getDateFormat6(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("\\/");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISS_SLASH;
}
}
private static DateFormat getDateFormat5(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("-");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISS_DASH;
}
}
private static DateFormat getDateFormat4(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("\\/");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISSMS_SLASH;
}
}
private static DateFormat getDateFormat3(String strDate) {
String[] tmp = strDate.split("\\.");
String[] ymd = tmp[0].split("\\/");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISSMS_SLASH_POINT;
}
}
private static DateFormat getDateFormat2(String strDate) {
String[] tmp = strDate.split(" ");
String[] ymd = tmp[0].split("-");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISSMS_DASH;
}
}
private static DateFormat getDateFormat1(String strDate) {
String[] tmp = strDate.split("\\.");
String[] ymd = tmp[0].split("-");
String[] hms = tmp[1].split(":");
if (!CheckUtil.isMonth(ymd[1])) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(ymd[2])) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(hms[0])) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(hms[1])) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(hms[2])) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISSMS_DASH_POINT;
}
}
private static DateFormat getDateFormatByNumber(String strDate) {
int length = strDate.length();
final int num4 = 4;
final int num6 = 6;
final int num8 = 8;
final int num10 = 10;
final int num12 = 12;
final int num14 = 14;
final int num17 = 17;
if (length == num6) {
if (CheckUtil.isMonth(strDate.substring(num4, num6))) {
return DateFormat.YYYYMM;
} else {
throw new RuntimeException(strDate + "的月份不正确");
}
} else if (length == num8) {
if (!CheckUtil.isMonth(strDate.substring(num4, num6))) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(strDate.substring(num6, num8))) {
throw new RuntimeException(strDate + "的天数不正确");
} else {
return DateFormat.YYYYMMDD;
}
} else if (length == num12) {
if (!CheckUtil.isMonth(strDate.substring(num4, num6))) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(strDate.substring(num6, num8))) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(strDate.substring(num8, num10))) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(strDate.substring(num10, num12))) {
throw new RuntimeException(strDate + "的分钟不正确");
} else {
return DateFormat.YYYYMMDDHHMI;
}
} else if (length == num14) {
if (!CheckUtil.isMonth(strDate.substring(num4, num6))) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(strDate.substring(num6, num8))) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(strDate.substring(num8, num10))) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(strDate.substring(num10, num12))) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(strDate.substring(num12, num14))) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISS;
}
} else if (length == num17) {
if (!CheckUtil.isMonth(strDate.substring(num4, num6))) {
throw new RuntimeException(strDate + "的月份不正确");
} else if (!CheckUtil.isDay(strDate.substring(num6, num8))) {
throw new RuntimeException(strDate + "的天数不正确");
} else if (!CheckUtil.isHour(strDate.substring(num8, num10))) {
throw new RuntimeException(strDate + "的小时不正确");
} else if (!CheckUtil.isMinute(strDate.substring(num10, num12))) {
throw new RuntimeException(strDate + "的分钟不正确");
} else if (!CheckUtil.isSecond(strDate.substring(num12, num14))) {
throw new RuntimeException(strDate + "的秒数不正确");
} else {
return DateFormat.YYYYMMDDHHMISSMS;
}
} else {
throw new RuntimeException(strDate + "不是日期类型的字符串");
}
}
/**
* 获得年的部分
*
* @param date 日期
* @return 年的部分
*/
public static int getYear(Date date) {
return toCalendar(date).get(Calendar.YEAR);
}
/**
* 获得指定日期所属季节
*
* @param date 日期
* @return 第几个季节
*/
public static int getSeason(Date date) {
return (toCalendar(date).get(Calendar.MONTH) + 1) / 3 + 1;
}
/**
* 获得月的部分
*
* @param date 日期
* @return 月的部分
*/
public static int getMonth(Date date) {
return toCalendar(date).get(Calendar.MONTH) + 1;
}
/**
* 获得日的部分
*
* @param date 日期
* @return 日的部分
*/
public static int getDay(Date date) {
return toCalendar(date).get(Calendar.DAY_OF_MONTH);
}
/**
* 获得时的部分
*
* @param date 日期
* @return 时的部分
*/
public static int getHour(Date date) {
return toCalendar(date).get(Calendar.HOUR_OF_DAY);
}
/**
* 获得分的部分
*
* @param date 日期
* @return 分的部分
*/
public static int getMinute(Date date) {
return toCalendar(date).get(Calendar.MINUTE);
}
/**
* 获得秒的部分
*
* @param date 日期
* @return 秒的部分
*/
public static int getSecond(Date date) {
return toCalendar(date).get(Calendar.SECOND);
}
/**
* 获得毫秒的部分
*
* @param date 日期
* @return 毫秒的部分
*/
public static int getMillisecond(Date date) {
return toCalendar(date).get(Calendar.MILLISECOND);
}
/**
* 获得指定日期是所在年份的第几周
*
* @param date 日期
* @return 周
*/
public static int getWeekOfYear(Date date) {
return toCalendar(date).get(Calendar.WEEK_OF_YEAR);
}
/**
* 获得指定日期是所在月份的第几周
*
* @param date 日期
* @return 周
*/
public static int getWeekOfMonth(Date date) {
return toCalendar(date).get(Calendar.WEEK_OF_MONTH);
}
/**
* 获得指定日期是所在年份的第几天
*
* @param date 日期
* @return 天
*/
public static int getDayOfYear(Date date) {
return toCalendar(date).get(Calendar.DAY_OF_YEAR);
}
/**
* 获得指定日期是所在月份的第几天
*
* @param date 日期
* @return 天
*/
public static int getDayOfMonth(Date date) {
return toCalendar(date).get(Calendar.DAY_OF_MONTH);
}
/**
* 获得指定日期是所在周的第几天
*
* @param date 日期
* @return 天
*/
public static int getDayOfWeek(Date date) {
return toCalendar(date).get(Calendar.DAY_OF_WEEK);
}
/**
* 是否为上午
*
* @param date 日期
* @return 是否为上午
*/
public static boolean isAM(Date date) {
return Calendar.AM == toCalendar(date).get(Calendar.AM_PM);
}
/**
* 是否为下午
*
* @param date 日期
* @return 是否为下午
*/
public static boolean isPM(Date date) {
return Calendar.PM == toCalendar(date).get(Calendar.AM_PM);
}
/**
* 当前时间
*
* @return 时间
*/
public static Date date() {
return new Date();
}
/**
* 是否闰年
*
* @param year 年
* @return 是否闰年
*/
public static boolean isLeapYear(int year) {
return new GregorianCalendar().isLeapYear(year);
}
/**
* 获取指定日期偏移指定时间后的时间
*
* @param date 基准日期
* @param field 偏移的粒度大小(小时、天、月等)
* @param offset 偏移量,正数为向后偏移,负数为向前偏移
* @return 偏移后的日期
*/
public static Date add(Date date, int field, int offset) {
Calendar calendar = toCalendar(date);
calendar.add(field, offset);
return calendar.getTime();
}
/**
* 偏移毫秒数
*
* @param date 日期
* @param offset 偏移毫秒数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addMillisecond(Date date, int offset) {
return add(date, Calendar.MILLISECOND, offset);
}
/**
* 偏移秒数
*
* @param date 日期
* @param offset 偏移秒数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addSecond(Date date, int offset) {
return add(date, Calendar.SECOND, offset);
}
/**
* 偏移分钟
*
* @param date 日期
* @param offset 偏移分钟数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addMinute(Date date, int offset) {
return add(date, Calendar.MINUTE, offset);
}
/**
* 偏移小时
*
* @param date 日期
* @param offset 偏移小时数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addHour(Date date, int offset) {
return add(date, Calendar.HOUR_OF_DAY, offset);
}
/**
* 偏移天
*
* @param date 日期
* @param offset 偏移天数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addDay(Date date, int offset) {
return add(date, Calendar.DAY_OF_YEAR, offset);
}
/**
* 偏移周
*
* @param date 日期
* @param offset 偏移周数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addWeek(Date date, int offset) {
return add(date, Calendar.WEEK_OF_YEAR, offset);
}
/**
* 偏移月
*
* @param date 日期
* @param offset 偏移月数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addMonth(Date date, int offset) {
return add(date, Calendar.MONTH, offset);
}
/**
* 偏移年
*
* @param date 日期
* @param offset 偏移年数,正数向未来偏移,负数向历史偏移
* @return 偏移后的日期
*/
public static Date addYear(Date date, int offset) {
return add(date, Calendar.YEAR, offset);
}
/**
* 判断两个日期相差的时长
*
* @param unit 相差的单位:相差 天{@link DateUnit#DAY}、小时{@link DateUnit#HOUR} 等
* @param beginDate 起始日期
* @param endDate 结束日期
* @return 日期差
*/
public static long between(DateUnit unit, Date beginDate, Date endDate) {
final Date begin;
final Date end;
if (beginDate.before(endDate)) {
begin = beginDate;
end = endDate;
} else {
begin = endDate;
end = beginDate;
}
long diff = end.getTime() - begin.getTime();
return diff / unit.value();
}
/**
* 判断是否在两个日期之间
*
* @param date 相差的单位:相差 天{@link DateUnit#DAY}、小时{@link DateUnit#HOUR} 等
* @param beginDate 起始日期
* @param endDate 结束日期
* @return 0:在两个日期之间,1:大于大的日期,-1:小于小的日期
*/
public static int between(Date date, Date beginDate, Date endDate) {
long beginMills = beginDate.getTime();
long endMills = endDate.getTime();
long thisMills = date.getTime();
if (thisMills > endMills) {
return 1;
} else if (thisMills < beginMills) {
return -1;
} else {
return 0;
}
}
/**
* 获取某日期的开始时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date beginOfDay(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取某日期的结束时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date endOfDay(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 获取某周的开始时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date beginOfWeek(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return beginOfDay(calendar.getTime());
}
/**
* 获取某周的结束时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date endOfWeek(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
return endOfDay(calendar.getTime());
}
/**
* 获取某月的开始时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date beginOfMonth(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return beginOfDay(calendar.getTime());
}
/**
* 获取某月的结束时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date endOfMonth(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return endOfDay(calendar.getTime());
}
/**
* 获取某年的开始时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date beginOfYear(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.MONTH, 1);
return beginOfMonth(calendar.getTime());
}
/**
* 获取某年的结束时间
*
* @param date 日期 {@link Date}
* @return {@link Date}
*/
public static Date endOfYear(Date date) {
Calendar calendar = toCalendar(date);
calendar.set(Calendar.MONTH, Calendar.DECEMBER);
return endOfMonth(calendar.getTime());
}
}