import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 日期工具
*
* @author qiaoxingfu
* @time 2019/9/29
*/
public class DateUtils {
public static final String DAY_FORMAT = "yyyy-MM-dd";
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static Date parseDateByString(String dateString) {
try {
return new SimpleDateFormat(DAY_FORMAT).parse(dateString);
} catch (ParseException e) {
}
return null;
}
/**
* 获取当前月的第一天
*/
public static Date getThisMonthFirstDay() {
return getThisMonthFirstDay(new Date());
}
/**
* 获取当前月的最后一天
*/
public static Date getThisMonthLastDay() {
return getThisMonthLastDay(new Date());
}
/**
* 获取当前月的第一天
*/
public static Date getThisMonthFirstDay(Date nowDate) {
Calendar cale = Calendar.getInstance();
cale.setTime(nowDate);
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
return cale.getTime();
}
/**
* 获取当前月的最后一天
*/
public static Date getThisMonthLastDay(Date nowDate) {
Calendar cale = Calendar.getInstance();
cale.setTime(nowDate);
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
return cale.getTime();
}
/**
* 获取当前月的第一天
*/
public static Date getThisMonthFirstDay00Secend() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
cale.set(Calendar.MILLISECOND, 0);
return cale.getTime();
}
/**
* 获取上个月的第一天
*/
public static Date getLastMonthFirstDay() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, -1);
cale.set(Calendar.DAY_OF_MONTH, 1);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
cale.set(Calendar.MILLISECOND, 0);
return cale.getTime();
}
/**
* 获取上个月的最后一天(这个月的第一天凌晨)
*/
public static Date getLastMonthLastDay() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 0);
cale.set(Calendar.HOUR_OF_DAY, 23);
cale.set(Calendar.MINUTE, 59);
cale.set(Calendar.SECOND, 59);
return cale.getTime();
}
/**
* 获取指定日期的第几个月的第一天
*
* @param date
* @return
*/
public static Date getDateMonthFirstDay(Date date, int day) {
Calendar cale = Calendar.getInstance();
cale.setTime(date);
cale.add(Calendar.MONTH, day);
cale.set(Calendar.DAY_OF_MONTH, 1);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
return cale.getTime();
}
/**
* 获取指定日期的第几周的第一天
*/
public static Date getDateWeekFirstDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 将每周第一天设为星期一,默认是星期天
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.add(Calendar.DATE, day * 7);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
}
/**
* 获取本周的第一天
*/
public static Date getThisWeekFirstDay() {
Calendar c = Calendar.getInstance();
int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
if (day_of_week == 0)
day_of_week = 7;
c.add(Calendar.DATE, -day_of_week + 1);
return c.getTime();
}
/**
* 获取上周的第一天
*/
public static Date getLastWeekFirstDay() {
Calendar cal = Calendar.getInstance();
// 将每周第一天设为星期一,默认是星期天
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.add(Calendar.DATE, -1 * 7);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
}
/**
* 获取上周的最后一天
*/
public static Date getLastWeekLastDay() {
Calendar cal = Calendar.getInstance();
// 将每周第一天设为星期一,默认是星期天
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.add(Calendar.DATE, -1 * 7);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
/**
* 获取昨天的00点00分
*/
public static Date getYestaday00Second() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.DATE, -1);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
return cale.getTime();
}
/**
* 获取指定日期的前一天的00点00分
*/
public static Date getYestadayByToDay(Date date, Integer amount) {
Calendar cale = Calendar.getInstance();
cale.setTime(date);
cale.add(Calendar.DAY_OF_MONTH, amount);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
return cale.getTime();
}
/**
* 获取指定日期的第几天的00点00分,
*/
public static Date getDate00Second(Date date, int day) {
Calendar cale = Calendar.getInstance();
cale.setTime(date);
cale.add(Calendar.DATE, day);
cale.set(Calendar.HOUR_OF_DAY, 0);
cale.set(Calendar.MINUTE, 0);
cale.set(Calendar.SECOND, 0);
return cale.getTime();
}
/**
* 获取昨天的23点59分59秒
*/
public static Date getYestaday59Second() {
Calendar cale = Calendar.getInstance();
cale.add(Calendar.DATE, -1);
cale.set(Calendar.HOUR_OF_DAY, 23);
cale.set(Calendar.MINUTE, 59);
cale.set(Calendar.SECOND, 59);
return cale.getTime();
}
/**
* 获取指定日期的第几天的23点59分59秒
*/
public static Date get59Second(Date date, int day) {
Calendar cale = Calendar.getInstance();
cale.setTime(date);
cale.add(Calendar.DATE, day);
cale.set(Calendar.HOUR_OF_DAY, 23);
cale.set(Calendar.MINUTE, 59);
cale.set(Calendar.SECOND, 59);
return cale.getTime();
}
/**
* 判断该日期是否是该月的第一天
*
* @param date 需要判断的日期
* @return
*/
public static boolean isFirstDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH) == 1;
}
/**
* 判断该日期是否是该月的最后一天
*
* @param date 需要判断的日期
* @return
*/
public static boolean isLastDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH) == calendar
.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 判断该日期是否是该周的第一天
*
* @param date 需要判断的日期
* @return
*/
public static boolean isFirstDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
return calendar.get(Calendar.DAY_OF_WEEK) == 2;
}
/**
* 判断该日期是否是该周的最后一天
*
* @param date 需要判断的日期
* @return
*/
public static boolean isLastDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
return calendar.get(Calendar.DAY_OF_WEEK) == 1;
}
/**
* 比较两个时间是否为同一天
* @param date1
* @param date2
* @return
*/
public static boolean isSameDay(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
SimpleDateFormat fmt = new SimpleDateFormat(DAY_FORMAT);
return fmt.format(date1).equals(fmt.format(date2));
}
/**
* 指定日期获取周末
* @param date
* @return
*/
public static int getWeekOfDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return w;
}
/**
* 将时间转成字符串
*/
public static String dateToString(Date date) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
} catch (Exception e) {
}
return null;
}
/**
* 将时间转成字符串
*/
public static String dateToYmdhms(Date date) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
return format.format(date);
} catch (Exception e) {
}
return null;
}
/**
* 将时间转成年月日
*/
public static String dateToYmd(Date date) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(date);
} catch (Exception e) {
}
return null;
}
/**
* 将时间转成年月日
*/
public static String dateToYmd(Date date, String ymd) {
try {
SimpleDateFormat format = new SimpleDateFormat(ymd);
return format.format(date);
} catch (Exception e) {
}
return null;
}
/**
* 获取今天的开始时间
*/
public static Date getStartTimeOfToday(Date date) {
Calendar todayStart = Calendar.getInstance();
todayStart.setTime(date);
todayStart.set(Calendar.HOUR_OF_DAY, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 0);
todayStart.set(Calendar.MILLISECOND, 0);
return todayStart.getTime();
}
/**
* 获取今天的结束时间
*/
public static Date getEndTimeOfToday(Date date) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.setTime(date);
todayEnd.set(Calendar.HOUR_OF_DAY, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
/**
* @return int
* @title 获取今天还剩多少秒
*/
public static int getSeconds() {
Calendar curDate = Calendar.getInstance();
Calendar tommorowDate =
new GregorianCalendar(curDate.get(Calendar.YEAR), curDate.get(Calendar.MONTH),
curDate.get(Calendar.DATE) + 1, 0, 0, 0);
return (int) (tommorowDate.getTimeInMillis() - curDate.getTimeInMillis()) / 1000;
}
/**
* 创建一个{DATE_FORMAT}格式的SimpleDateFormat
*
* @return SimpleDateFormat
*/
public static SimpleDateFormat getDateFormat() {
return new SimpleDateFormat(DAY_FORMAT);
}
/**
* <p> 创建一个dateFormate格式的SimpleDateFormat
*
* @param dateFormate 时间格式
* @return SimpleDateFormat
*/
public static SimpleDateFormat getDateFormat(String dateFormate) {
return new SimpleDateFormat(dateFormate);
}
/**
* 根据日期字符串,获取当天开始的时间戳
*
* @param date
* @return
*/
public static Long getDateBegin(String date) {
try {
return getDateFormat().parse(date).getTime();
} catch (ParseException e) {
return null;
}
}
/**
* 根据日期字符串,获取当天结束的时间戳
*
* @param date
* @return
*/
public static Long getDateEnd(String date) {
String dateEnd = date + " 23:59:59";
try {
return getDateFormat(DATE_FORMAT).parse(dateEnd).getTime();
} catch (ParseException e) {
return null;
}
}
/**
* 时间戳转日期字符串
*
* @param timestamp
* @return
*/
public static String formatDayTimestamp(Long timestamp) {
if (timestamp == null) {
return null;
}
Date date = new Date(timestamp);
return getDateFormat().format(date);
}
/**
* 时间戳转时间字符串
*
* @param timestamp
* @return
*/
public static String formatTimestamp(Long timestamp) {
Date date = new Date(timestamp);
return getDateFormat(DATE_FORMAT).format(date);
}
//获取传入日期所在年的第一天
public static Date getFirstDayDateOfYear(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR);
cal.set(Calendar.DAY_OF_YEAR, last);
return cal.getTime();
}
//获取传入日期所在年的最后一天
public static Date getLastDayOfYear(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
cal.set(Calendar.DAY_OF_YEAR, last);
return cal.getTime();
}
//今年第一天
public static Date getNowYearFirstDay() {
Calendar instance = Calendar.getInstance();
int year = instance.get(Calendar.YEAR);
instance.set(year, 1, 1);
return instance.getTime();
}
//去年第一天
public static Date getLastYearFirstDay() {
Calendar instance = Calendar.getInstance();
int year = instance.get(Calendar.YEAR);
instance.set(year - 1, 1, 1);
return instance.getTime();
}
//计算两天天数
public static int daysBetween(Date smdate, Date bdate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
smdate = sdf.parse(sdf.format(smdate));
bdate = sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
//查询某个时间是否在指定的区间内
public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) {
return true;
} else {
return false;
}
}
//获取指定日期的星期一
public static Date getWeekByDate(Date time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(time);
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
cal.setFirstDayOfWeek(Calendar.MONDAY);
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}
//获取指定日期的月初
public static Date getFirstDayDateOfMonth(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
return cal.getTime();
}
//获取指定日期的月末
public static Date getLastDayOfMonth(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
return cal.getTime();
}
//获取指定日期的周末
public static Date getLastDayOfWeek(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
return date;
}
c.add(Calendar.DATE, 7 - c.get(Calendar.DAY_OF_WEEK) + 1);
return c.getTime();
}
/**
* 判断两个时间年月是否相等
*
* @param date1
* @param date2
* @return
*/
public static Boolean isEqeuals(Date date1, Date date2) {
Calendar instance = Calendar.getInstance();
instance.setTime(date1);
int date1Year = instance.get(Calendar.YEAR);
int date1Month = instance.get(Calendar.MONTH);
instance.setTime(date2);
int date2Year = instance.get(Calendar.YEAR);
int date2Month = instance.get(Calendar.MONTH);
return (date1Year == date2Year && date1Month == date2Month);
}
}
常用时间工具类
最新推荐文章于 2022-06-06 15:23:08 发布