1.本周開始時間戳 - 以星期一為本周的第一天
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é)束時間戳 - 以星期一為本周的第一天
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.本月開始時間戳
public static String getMonthStartTime() {
? ? Calendar c = Calendar.getInstance();
? ? c.add(Calendar.MONTH, 0);
? ? c.set(Calendar.DAY_OF_MONTH, 1);//設置為1號,當前日期既為本月第一天
? ? //將小時至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.獲取當前的星期數(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類型的時分秒
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ù)日期獲取本周一的時間
public static Date getThisWeekMonday(Date date) {
? ? Calendar cal = Calendar.getInstance();
? ? cal.setTime(date);
? ? // 獲得當前日期是一個星期的第幾天
? ? 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);
? ? // 根據(jù)日歷的規(guī)則木蹬,給當前日期減去星期幾與一個星期第一天的差值
? ? cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
? ? return cal.getTime();
}
8.時間字符串加/減天數(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.返回當前時間的前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.給定開始時間 結(jié)束時間 返回天數(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.獲取兩個時間段的所有日期
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.判斷當前時間是否在時間段內(nèi)
public static Boolean belongCalendar(String beginTime, String endTime) {
? ? SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//設置日期格式
? ? 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.判斷時間是否在時間段內(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.獲取某個時間段內(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 設置此 Calendar 的時間
? ? ? ? calBegin.setTime(dBegin);
? ? ? ? Calendar calEnd = Calendar.getInstance();
? ? ? ? // 使用給定的 Date 設置此 Calendar 的時間
? ? ? ? calEnd.setTime(dEnd);
? ? ? ? // 測試此日期是否在指定日期之后
? ? ? ? while (dEnd.after(calBegin.getTime())) {
? ? ? ? ? ? // 根據(jù)日歷的規(guī)則狐援,為給定的日歷字段添加或減去指定的時間量
? ? ? ? ? ? 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:判斷倆個日期段是否重疊
/**
* 判斷倆個日期段是否重疊
*/
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. 獲得某天最大時間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. 獲得某天最小時間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());
}