|
@@ -0,0 +1,547 @@
|
|
|
+package com.huaxu.util;
|
|
|
+
|
|
|
+import java.sql.Timestamp;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+/*
|
|
|
+ * 由于为了以后使用方便,所有方法的返回类型都设为了 java.utils.Date 请在使用时根据自己的需要进行日期格式化处理,如:
|
|
|
+ *
|
|
|
+ * import java.text.SimpleDateFormat;SimpleDateFormat simpleDateFormat = new
|
|
|
+ * SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String todayBegin =
|
|
|
+ * simpleDateFormat.format
|
|
|
+ * (DateUtils.getDayBegin());System.out.println(todayBegin );//输出结果为2017-10-26
|
|
|
+ * 00:00:00
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * 日期工具类
|
|
|
+ */
|
|
|
+public class DatesUtil {
|
|
|
+ public static final String DATE_TIME_FORMAT="yyyy-MM-dd HH:mm:ss";
|
|
|
+ public static final String DATE_FORMAT = "yyyy-MM-dd";
|
|
|
+
|
|
|
+ // 获取当天的开始时间
|
|
|
+ public static Date getDayBegin() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ cal.set(Calendar.MILLISECOND, 0);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当天的结束时间
|
|
|
+ public static Date getDayEnd() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
+ cal.set(Calendar.MINUTE, 59);
|
|
|
+ cal.set(Calendar.SECOND, 59);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取昨天的开始时间
|
|
|
+ public static Date getBeginDayOfYesterday() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(getDayBegin());
|
|
|
+ cal.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取昨天的结束时间
|
|
|
+ public static Date getEndDayOfYesterDay() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(getDayEnd());
|
|
|
+ cal.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取明天的开始时间
|
|
|
+ public static Date getBeginDayOfTomorrow() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(getDayBegin());
|
|
|
+ cal.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取明天的结束时间
|
|
|
+ public static Date getEndDayOfTomorrow() {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(getDayEnd());
|
|
|
+ cal.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本周的开始时间
|
|
|
+ @SuppressWarnings("unused")
|
|
|
+ public static Date getBeginDayOfWeek() {
|
|
|
+ Date date = new Date();
|
|
|
+ if (date == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(date);
|
|
|
+ int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if (dayofweek == 1) {
|
|
|
+ dayofweek += 7;
|
|
|
+ }
|
|
|
+ cal.add(Calendar.DATE, 2 - dayofweek);
|
|
|
+ return getDayStartTime(cal.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本周的结束时间
|
|
|
+ public static Date getEndDayOfWeek() {
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(getBeginDayOfWeek());
|
|
|
+ cal.add(Calendar.DAY_OF_WEEK, 6);
|
|
|
+ Date weekEndSta = cal.getTime();
|
|
|
+ return getDayEndTime(weekEndSta);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取上周的开始时间
|
|
|
+ @SuppressWarnings("unused")
|
|
|
+ public static Date getBeginDayOfLastWeek() {
|
|
|
+ Date date = new Date();
|
|
|
+ if (date == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(date);
|
|
|
+ int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if (dayofweek == 1) {
|
|
|
+ dayofweek += 7;
|
|
|
+ }
|
|
|
+ cal.add(Calendar.DATE, 2 - dayofweek - 7);
|
|
|
+ return getDayStartTime(cal.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取上周的结束时间
|
|
|
+ public static Date getEndDayOfLastWeek() {
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(getBeginDayOfLastWeek());
|
|
|
+ cal.add(Calendar.DAY_OF_WEEK, 6);
|
|
|
+ Date weekEndSta = cal.getTime();
|
|
|
+ return getDayEndTime(weekEndSta);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本月的开始时间
|
|
|
+ public static Date getBeginDayOfMonth() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 1, 1);
|
|
|
+ return getDayStartTime(calendar.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本月的结束时间
|
|
|
+ public static Date getEndDayOfMonth() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 1, 1);
|
|
|
+ int day = calendar.getActualMaximum(5);
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 1, day);
|
|
|
+ return getDayEndTime(calendar.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取上月的开始时间
|
|
|
+ public static Date getBeginDayOfLastMonth() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 2, 1);
|
|
|
+ return getDayStartTime(calendar.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取上月的结束时间
|
|
|
+ public static Date getEndDayOfLastMonth() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 2, 1);
|
|
|
+ int day = calendar.getActualMaximum(5);
|
|
|
+ calendar.set(getNowYear(), getNowMonth() - 2, day);
|
|
|
+ return getDayEndTime(calendar.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本年的开始时间
|
|
|
+ public static Date getBeginDayOfYear() {
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.YEAR, getNowYear());
|
|
|
+ cal.set(Calendar.MONTH, Calendar.JANUARY);
|
|
|
+ cal.set(Calendar.DATE, 1);
|
|
|
+ return getDayStartTime(cal.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本年的结束时间
|
|
|
+ public static Date getEndDayOfYear() {
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.YEAR, getNowYear());
|
|
|
+ cal.set(Calendar.MONTH, Calendar.DECEMBER);
|
|
|
+ cal.set(Calendar.DATE, 31);
|
|
|
+ return getDayEndTime(cal.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取某个日期的开始时间
|
|
|
+ public static Timestamp getDayStartTime(Date d) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ if (null != d)
|
|
|
+ calendar.setTime(d);
|
|
|
+ calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
|
|
|
+ calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
|
|
|
+ calendar.set(Calendar.MILLISECOND, 0);
|
|
|
+ return new Timestamp(calendar.getTimeInMillis());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取某个日期的结束时间
|
|
|
+ public static Timestamp getDayEndTime(Date d) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ if (null != d)
|
|
|
+ calendar.setTime(d);
|
|
|
+ calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
|
|
|
+ calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
|
|
|
+ calendar.set(Calendar.MILLISECOND, 999);
|
|
|
+ return new Timestamp(calendar.getTimeInMillis());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取今年是哪一年
|
|
|
+ public static Integer getNowYear() {
|
|
|
+ Date date = new Date();
|
|
|
+ GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
|
|
|
+ gc.setTime(date);
|
|
|
+ return Integer.valueOf(gc.get(1));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取本月是哪一月
|
|
|
+ public static int getNowMonth() {
|
|
|
+ Date date = new Date();
|
|
|
+ GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
|
|
|
+ gc.setTime(date);
|
|
|
+ return gc.get(2) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 两个日期相减得到的天数
|
|
|
+ public static int getDiffDays(Date beginDate, Date endDate) {
|
|
|
+ if (beginDate == null || endDate == null) {
|
|
|
+ throw new IllegalArgumentException("getDiffDays param is null!");
|
|
|
+ }
|
|
|
+ long diff = (endDate.getTime() - beginDate.getTime())
|
|
|
+ / (1000 * 60 * 60 * 24);
|
|
|
+ int days = new Long(diff).intValue();
|
|
|
+ return days;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 两个日期相减得到的毫秒数
|
|
|
+ public static long dateDiff(Date beginDate, Date endDate) {
|
|
|
+ long date1ms = beginDate.getTime();
|
|
|
+ long date2ms = endDate.getTime();
|
|
|
+ return date2ms - date1ms;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取两个日期中的最大日期
|
|
|
+ public static Date max(Date beginDate, Date endDate) {
|
|
|
+ if (beginDate == null) {
|
|
|
+ return endDate;
|
|
|
+ }
|
|
|
+ if (endDate == null) {
|
|
|
+ return beginDate;
|
|
|
+ }
|
|
|
+ if (beginDate.after(endDate)) {
|
|
|
+ return beginDate;
|
|
|
+ }
|
|
|
+ return endDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取两个日期中的最小日期
|
|
|
+ public static Date min(Date beginDate, Date endDate) {
|
|
|
+ if (beginDate == null) {
|
|
|
+ return endDate;
|
|
|
+ }
|
|
|
+ if (endDate == null) {
|
|
|
+ return beginDate;
|
|
|
+ }
|
|
|
+ if (beginDate.after(endDate)) {
|
|
|
+ return endDate;
|
|
|
+ }
|
|
|
+ return beginDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回某月该季度的第一个月
|
|
|
+ public static Date getFirstSeasonDate(Date date) {
|
|
|
+ final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.setTime(date);
|
|
|
+ int sean = SEASON[cal.get(Calendar.MONTH)];
|
|
|
+ cal.set(Calendar.MONTH, sean * 3 - 3);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回某个日期下几天的日期
|
|
|
+ public static Date getNextDay(Date date, int i) {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(date);
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Date getNextMonth(Date date ,int i){
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(date);
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ cal.add(Calendar.MONTH, 0);
|
|
|
+ cal.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + i);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回某个日期前几天的日期
|
|
|
+ public static Date getFrontDay(Date date, int i) {
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ cal.setTime(date);
|
|
|
+ cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)
|
|
|
+ @SuppressWarnings({ "rawtypes", "unchecked" })
|
|
|
+ public static List getTimeList(int beginYear, int beginMonth, int endYear,
|
|
|
+ int endMonth, int k) {
|
|
|
+ List list = new ArrayList();
|
|
|
+ if (beginYear == endYear) {
|
|
|
+ for (int j = beginMonth; j <= endMonth; j++) {
|
|
|
+ list.add(getTimeList(beginYear, j, k));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ {
|
|
|
+ for (int j = beginMonth; j < 12; j++) {
|
|
|
+ list.add(getTimeList(beginYear, j, k));
|
|
|
+ }
|
|
|
+ for (int i = beginYear + 1; i < endYear; i++) {
|
|
|
+ for (int j = 0; j < 12; j++) {
|
|
|
+ list.add(getTimeList(i, j, k));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int j = 0; j <= endMonth; j++) {
|
|
|
+ list.add(getTimeList(endYear, j, k));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
|
|
|
+ @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
|
+ public static List getTimeList(int beginYear, int beginMonth, int k) {
|
|
|
+ List list = new ArrayList();
|
|
|
+ Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
|
|
|
+ int max = begincal.getActualMaximum(Calendar.DATE);
|
|
|
+ for (int i = 1; i < max; i = i + k) {
|
|
|
+ list.add(begincal.getTime());
|
|
|
+ begincal.add(Calendar.DATE, k);
|
|
|
+ }
|
|
|
+ begincal = new GregorianCalendar(beginYear, beginMonth, max);
|
|
|
+ list.add(begincal.getTime());
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String formatNow(String format) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
|
|
|
+ String formatStr = sdf.format(new Date());
|
|
|
+ return formatStr;
|
|
|
+ }
|
|
|
+ public static String formatNow() {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT);
|
|
|
+ String formatStr = sdf.format(new Date());
|
|
|
+ return formatStr;
|
|
|
+ }
|
|
|
+ public static String formatDate(Date date ,String format) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
|
|
|
+ String formatStr = sdf.format(date);
|
|
|
+ return formatStr;
|
|
|
+ }
|
|
|
+ // 当前日期的后几天
|
|
|
+ public static Date afterNow(int day) {
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.add(Calendar.DATE,Math.abs(day));
|
|
|
+ Date time=cal.getTime();
|
|
|
+ return time;
|
|
|
+ }
|
|
|
+ // 当前日期的前几天
|
|
|
+ public static Date beforeNow(int day) {
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.add(Calendar.DATE,-Math.abs(day));
|
|
|
+ Date time=cal.getTime();
|
|
|
+ return time;
|
|
|
+ }
|
|
|
+ public static Date before(Date date ,int n) {
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.setTime(date);
|
|
|
+ cal.add(Calendar.DATE,-n);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+ public static Date after(Date date,int n) {
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.setTime(date);
|
|
|
+ cal.add(Calendar.DATE,n);
|
|
|
+ return cal.getTime();
|
|
|
+ }
|
|
|
+ public static List<String> beforeNowDateArray(int day){
|
|
|
+ List<String> dates = new ArrayList<String>();
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ for(int i =1 ;i<=Math.abs(day);i++) {
|
|
|
+ cal.add(Calendar.DATE,-1);
|
|
|
+ dates.add(formatDate(cal.getTime(),"yyyyMMdd"));
|
|
|
+ }
|
|
|
+ return dates;
|
|
|
+ }
|
|
|
+ public static Set<String> betweenDate(Date startDate ,Date endDate){
|
|
|
+ Set<String> dates = new HashSet<String>();
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.setTime(endDate);
|
|
|
+ while(endDate.after(startDate)) {
|
|
|
+ dates.add(formatDate(cal.getTime(),"yyyyMMdd"));
|
|
|
+ cal.add(Calendar.DATE,-1);
|
|
|
+ cal.setTime(cal.getTime());
|
|
|
+ endDate = cal.getTime();
|
|
|
+ }
|
|
|
+ dates.add(formatDate(startDate,"yyyyMMdd"));
|
|
|
+ return dates;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Set<String> betweenMonth(Date startDate ,Date endDate){
|
|
|
+ Set<String> dates = new HashSet<>();
|
|
|
+ Calendar cal=Calendar.getInstance();
|
|
|
+ cal.setTime(endDate);
|
|
|
+ while(endDate.after(startDate)) {
|
|
|
+ dates.add(formatDate(cal.getTime(),"yyyyMM"));
|
|
|
+ cal.add(Calendar.MONTH,-1);
|
|
|
+ cal.setTime(cal.getTime());
|
|
|
+ endDate = cal.getTime();
|
|
|
+ }
|
|
|
+ dates.add(formatDate(startDate,"yyyyMM"));
|
|
|
+ return dates;
|
|
|
+ }
|
|
|
+ public static Date parseDate(String dateStr,String format) {
|
|
|
+ Date date = null ;
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
|
|
|
+ try {
|
|
|
+ date = sdf.parse(dateStr);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return date;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 判断某一时间是否在一个区间内
|
|
|
+ *
|
|
|
+ * @param sourceTime
|
|
|
+ * 时间区间,半闭合,如[10:00-20:00]
|
|
|
+ * @param curTime
|
|
|
+ * 需要判断的时间 如10:00
|
|
|
+ * @return
|
|
|
+ * @throws IllegalArgumentException
|
|
|
+ */
|
|
|
+ public static boolean isInTime(String sourceTime, String curTime) {
|
|
|
+ if (sourceTime == null || !sourceTime.contains("-") || !sourceTime.contains(":")) {
|
|
|
+ throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
|
|
|
+ }
|
|
|
+ if (curTime == null || !curTime.contains(":")) {
|
|
|
+ throw new IllegalArgumentException("Illegal Argument arg:" + curTime);
|
|
|
+ }
|
|
|
+ String[] args = sourceTime.split("-");
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
|
|
|
+ try {
|
|
|
+ long now = sdf.parse(curTime).getTime();
|
|
|
+ long start = sdf.parse(args[0]).getTime();
|
|
|
+ long end = sdf.parse(args[1]).getTime();
|
|
|
+ if (args[1].equals("00:00")) {
|
|
|
+ args[1] = "24:00";
|
|
|
+ }
|
|
|
+ if (end < start) {
|
|
|
+ if (now > end && now < start) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (now >= start && now <= end) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new IllegalArgumentException("Illegal Argument arg:" + sourceTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static Date before(Date d ,long milSeconds) {
|
|
|
+ return new Date(d.getTime()-milSeconds);
|
|
|
+ }
|
|
|
+ public static Date yesterdayLastDate() {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(new Date());
|
|
|
+ calendar.add(Calendar.DATE, -1);
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Date dateToISODate(Date date) {
|
|
|
+ //T代表后面跟着时间,Z代表UTC统一时间
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
|
|
|
+ format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
|
|
|
+ String isoDate = format.format(date);
|
|
|
+ try {
|
|
|
+ return format.parse(isoDate);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Date beforeMonth(int month){
|
|
|
+ Date date = new Date();
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(date); // 设置为当前时间
|
|
|
+ calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
|
|
|
+ date = calendar.getTime();
|
|
|
+ return date ;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Date beforeYear(int year){
|
|
|
+ Date date = new Date();
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(date); // 设置为当前时间
|
|
|
+ calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1); // 设置为上一年
|
|
|
+ date = calendar.getTime();
|
|
|
+ return date ;
|
|
|
+ }
|
|
|
+ // Wed Jan 02 03:09:49 CST 2019 -> 2019-02-02 03:09:49
|
|
|
+ public static String format(String timeString){
|
|
|
+ try {
|
|
|
+ SimpleDateFormat sfStart = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH) ;
|
|
|
+ SimpleDateFormat sfEnd = new SimpleDateFormat(DATE_TIME_FORMAT);
|
|
|
+ String format = sfEnd.format(sfStart.parse(timeString));
|
|
|
+ return format ;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null ;
|
|
|
+ }
|
|
|
+ public static void main(String[] args) {
|
|
|
+ //String d = "2019-11-14 13:10:16";
|
|
|
+ //System.out.println(DatesUtil.parseDate(d, DatesUtil.DATE_TIME_FORMAT));
|
|
|
+// System.out.println(DatesUtil.formatDate(getNextDay(DatesUtil.beforeNow(7),1), DatesUtil.DATE_TIME_FORMAT));
|
|
|
+// System.out.println(DatesUtil.formatDate(getNextDay(DatesUtil.beforeMonth(1),1), DatesUtil.DATE_TIME_FORMAT));
|
|
|
+// Set<String> iter = DatesUtil.betweenDate(DatesUtil.beforeMonth(1), new Date());
|
|
|
+// System.out.println(DatesUtil.formatDate(getNextMonth(DatesUtil.beforeYear(1),1), DatesUtil.DATE_TIME_FORMAT));
|
|
|
+// Set<String> iter1 = DatesUtil.betweenMonth(DatesUtil.beforeYear(1),new Date());
|
|
|
+// System.out.println(JSON.toJSONString(iter));
|
|
|
+// System.out.println(JSON.toJSONString(iter1));
|
|
|
+
|
|
|
+ String d = "Wed Jan 02 03:09:49 CST 2019";
|
|
|
+ System.out.println(DatesUtil.format(d));
|
|
|
+
|
|
|
+ }
|
|
|
+}
|