時(shí)間工具類

1.本周開始時(shí)間戳 - 以星期一為本周的第一天

public static String getWeekStartTime() {

? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? Calendar cal = Calendar.getInstance();

? ? int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

? ? if (day_of_week == 0) {

? ? ? ? day_of_week = 7;

}

? ? cal.add(Calendar.DATE, -day_of_week + 1);

? ? return simpleDateFormat.format(cal.getTime());

}

2.本周結(jié)束時(shí)間戳 - 以星期一為本周的第一天

public static String getWeekEndTime() {

? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? Calendar cal = Calendar.getInstance();

? ? int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

? ? if (day_of_week == 0) {

? ? ? ? day_of_week = 7;

}

? ? cal.add(Calendar.DATE, -day_of_week + 7);

? ? return simpleDateFormat.format(cal.getTime());

}

?3.本月開始時(shí)間戳

public static String getMonthStartTime() {

? ? Calendar c = Calendar.getInstance();

? ? c.add(Calendar.MONTH, 0);

? ? c.set(Calendar.DAY_OF_MONTH, 1);//設(shè)置為1號,當(dāng)前日期既為本月第一天

? ? //將小時(shí)至0

? ? c.set(Calendar.HOUR_OF_DAY, 0);

? ? //將分鐘至0

? ? c.set(Calendar.MINUTE, 0);

? ? //將秒至0

? ? c.set(Calendar.SECOND, 0);

? ? //將毫秒至0

? ? c.set(Calendar.MILLISECOND, 0);

? ? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? String dateString = format.format(c.getTime());

? ? Date date = null;

? ? try {

? ? ? ? date = format.parse(dateString);

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return format.format(date);

}


4.獲取當(dāng)前的星期數(shù)

public static int setCurrentDayOfWeek(Calendar calendar) {

? ? //一周第一天是否為星期天

? ? boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY);

? ? //獲取周幾

? ? int weekDay = calendar.get(Calendar.DAY_OF_WEEK);

? ? calendar.setFirstDayOfWeek(Calendar.MONDAY);

? ? //若一周第一天為星期天,則-1

? ? if (isFirstSunday) {

? ? ? ? weekDay = weekDay - 1;

? ? ? ? if (weekDay == 0) {

? ? ? ? ? ? weekDay = 7;

}

}

? ? return weekDay;

}


5. 獲取date類型的時(shí)分秒

public static String getTime(Date date) {

? ? SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

? ? return dateFormat.format(date);

}


?6.獲取date類型的年月日

public static String getDate(Date date) {

? ? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

? ? return dateFormat.format(date);

}

7.根據(jù)日期獲取本周一的時(shí)間

public static Date getThisWeekMonday(Date date) {

? ? Calendar cal = Calendar.getInstance();

? ? cal.setTime(date);

? ? // 獲得當(dāng)前日期是一個(gè)星期的第幾天

? ? int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

? ? if (1 == dayWeek) {

? ? ? ? cal.add(Calendar.DAY_OF_MONTH, -1);

}

? ? // 設(shè)置一個(gè)星期的第一天,按中國的習(xí)慣一個(gè)星期的第一天是星期一

? ? cal.setFirstDayOfWeek(Calendar.MONDAY);

? ? // 獲得當(dāng)前日期是一個(gè)星期的第幾天

? ? int day = cal.get(Calendar.DAY_OF_WEEK);

? ? // 根據(jù)日歷的規(guī)則,給當(dāng)前日期減去星期幾與一個(gè)星期第一天的差值

? ? cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);

? ? return cal.getTime();

}


8.時(shí)間字符串加/減天數(shù)

public static String dateStrToAddDay(String strDate, int dayNums) {

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

? ? c.add(Calendar.DAY_OF_MONTH, dayNums);

? ? return DateTime.dateToString(c.getTime(), "yyyy-MM-dd");

}



?9.返回當(dāng)前時(shí)間的前7天集合?

public static List<String> getFrontSeven(String strDate) {

? ? List<String> dateList = new ArrayList<>();

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

? ? for (int i = 0; i < 7; i++) {

? ? ? ? c.add(Calendar.DATE, -1);

? ? ? ? dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

}

? ? return dateList;

}



10.給定開始時(shí)間 結(jié)束時(shí)間 返回天數(shù)集合

public static List<String> getStartTime(String startTime, String endTime) {

? ? int interval = 0;

? ? try {

? ? ? ? if (startTime.length() == "yyyy-MM-dd HH:mm:ss".length()) {

? ? ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

? ? ? ? ? ? Date d1 = sdf.parse(startTime);

? ? ? ? ? ? Date d2 = sdf.parse(endTime);

? ? ? ? ? ? interval = daysBetween(d1, d2);

}

? ? ? ? if (startTime.length() == "yyyy-MM-dd".length()) {

? ? ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

? ? ? ? ? ? Date d1 = sdf.parse(startTime);

? ? ? ? ? ? Date d2 = sdf.parse(endTime);

? ? ? ? ? ? interval = daysBetween(d1, d2);

}

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? List<String> dateList = new ArrayList<>();

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(startTime, "yyyy-MM-dd"));

? ? for (int i = 0; i <= interval; i++) {

? ? ? ? dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

? ? ? ? c.add(Calendar.DATE, 1);

}

? ? return dateList;

}


11.獲取今天日期? yyyy-MM-dd HH:mm:ss?

public static String getDataFroDatTime() {

? ? Date date = new Date();

? ? SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

? ? String data = formatter.format(date);

? ? return data;

}


12.獲取兩個(gè)時(shí)間段的所有日期

public static List<String> getBetweenDate(String begin, String end) {

? ? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

? ? List<String> betweenList = new ArrayList<String>();

? ? try {

? ? ? ? Calendar startDay = Calendar.getInstance();

? ? ? ? startDay.setTime(format.parse(begin));

? ? ? ? startDay.add(Calendar.DATE, -1);

? ? ? ? while (true) {

? ? ? ? ? ? startDay.add(Calendar.DATE, 1);

? ? ? ? ? ? Date newDate = startDay.getTime();

? ? ? ? ? ? String newend = format.format(newDate);

? ? ? ? ? ? betweenList.add(newend);

? ? ? ? ? ? if (end.equals(newend)) {

? ? ? ? ? ? ? ? break;

}

}

? ? } catch (Exception e) {

? ? ? ? e.printStackTrace();

}

? ? return betweenList;

}


?13.判斷當(dāng)前時(shí)間是否在時(shí)間段內(nèi)

public static Boolean belongCalendar(String beginTime, String endTime) {

? ? SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//設(shè)置日期格式

? ? Date now = null;

? ? Date beginTimeByDate = null;

? ? Date endTimeByDate = null;

? ? try {

? ? ? ? now = df.parse(df.format(new Date()));

? ? ? ? beginTimeByDate = df.parse(beginTime);

? ? ? ? endTimeByDate = df.parse(endTime);

? ? } catch (Exception e) {

? ? ? ? e.printStackTrace();

}

? ? Boolean flag = belongCalendar(now, beginTimeByDate, endTimeByDate);

? ? return flag;

}


14.判斷時(shí)間是否在時(shí)間段內(nèi)

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 {

? ? ? ? return false;

}

}


15.獲取某個(gè)時(shí)間段內(nèi)所有日期

public static List<String> getDayBetweenDates(String begin, String end) {

? ? List<String> lDate = new ArrayList<String>();

? ? try {

? ? ? ? SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");

? ? ? ? Date dBegin = sd.parse(begin);

? ? ? ? Date dEnd = sd.parse(end);

? ? ? ? lDate.add(sd.format(dBegin));

? ? ? ? Calendar calBegin = Calendar.getInstance();

? ? ? ? // 使用給定的 Date 設(shè)置此 Calendar 的時(shí)間

? ? ? ? calBegin.setTime(dBegin);

? ? ? ? Calendar calEnd = Calendar.getInstance();

? ? ? ? // 使用給定的 Date 設(shè)置此 Calendar 的時(shí)間

? ? ? ? calEnd.setTime(dEnd);

? ? ? ? // 測試此日期是否在指定日期之后

? ? ? ? while (dEnd.after(calBegin.getTime())) {

? ? ? ? ? ? // 根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時(shí)間量

? ? ? ? ? ? calBegin.add(Calendar.DAY_OF_MONTH, 1);

? ? ? ? ? ? lDate.add(sd.format(calBegin.getTime()));

}

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return lDate;

}

16.減一天

public static String dataBeforeDay(String dateOld) {

? ? DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

? ? /**

? ? * 減少一天

? ? */

? ? try {

? ? ? ? long dif = df.parse(dateOld).getTime() - 86400 * 1000; //減一天

? ? ? ? Date date = new Date();

? ? ? ? date.setTime(dif);

? ? ? ? return df.format(date);

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return "";

}

17.增加一天

public static String dataAfterDay(String dateOld) {

? ? DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

? ? try {

? ? ? ? Date dd = df.parse(dateOld);

? ? ? ? Calendar calendar = Calendar.getInstance();

? ? ? ? calendar.setTime(dd);

? ? ? ? calendar.add(Calendar.DAY_OF_MONTH, 1);//增加一天

? ? ? ? System.out.println("增加一天之后:" + df.format(calendar.getTime()));

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return "";

}


18:判斷倆個(gè)日期段是否重疊


/**

* 判斷倆個(gè)日期段是否重疊

*/

public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");

public static boolean isOverlap(String startdate1, String enddate1, String startdate2, String enddate2) {

? ? Date leftStartDate = null;

? ? Date leftEndDate = null;

? ? Date rightStartDate = null;

? ? Date rightEndDate = null;

? ? try {

? ? ? ? leftStartDate = format.parse(startdate1);

? ? ? ? leftEndDate = format.parse(enddate1);

? ? ? ? rightStartDate = format.parse(startdate2);

? ? ? ? rightEndDate = format.parse(enddate2);

? ? } catch (ParseException e) {

? ? ? ? return false;

? ? }

? ? return

? ? ? ? ? ? ((leftStartDate.getTime() >= rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((leftStartDate.getTime() > rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((rightStartDate.getTime() >= leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((rightStartDate.getTime() > leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime());

}


19. 獲得某天最大時(shí)間2017-10-15 23:59:59

public static Date getEndOfDay(Date date) {

? ? LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

? ? LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);

? ? return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

20. 獲得某天最小時(shí)間2017-10-15 00:00:00

public static Date getStartOfDay(Date date) {

? ? LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

? ? LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);

? ? return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容