¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.mdc.util; |
| | | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.DecimalFormat; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.*; |
| | | import java.time.temporal.ChronoField; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | public class DateUtils { |
| | | |
| | | private final static long DAYTIMESUNSET = 86400; |
| | | |
| | | /** |
| | | * @return å¾å°æå¤© |
| | | */ |
| | | public static Date getNextDay(Date d1) { |
| | | long d2 = d1.getTime() + 86400 * 1000; |
| | | return new Date(d2); |
| | | } |
| | | |
| | | /** |
| | | * @return å¾å°æ¨å¤© |
| | | */ |
| | | public static Date getPreviousDay(Date d1) { |
| | | long d2 = d1.getTime() - 86400 * 1000; |
| | | return new Date(d2); |
| | | } |
| | | |
| | | /** |
| | | * @return è¿åæ¶é´å·®çè¯è¨æè¿° å¦1天2å°æ¶5å6ç§ |
| | | */ |
| | | public static String different(Date d1, Date d2) { |
| | | if (d1 == null || d2 == null) { |
| | | return ""; |
| | | } |
| | | StringBuilder strB = new StringBuilder(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | try { |
| | | //毫ç§ms |
| | | long diff = d2.getTime() - d1.getTime(); |
| | | long diffSeconds = diff / 1000 % 60; |
| | | long diffMinutes = diff / (60 * 1000) % 60; |
| | | long diffHours = diff / (60 * 60 * 1000) % 24; |
| | | long diffDays = diff / (24 * 60 * 60 * 1000); |
| | | if (diffDays > 0) { |
| | | strB.append(diffDays + " 天 "); |
| | | strB.append(diffHours + " å°æ¶ "); |
| | | strB.append(diffMinutes + " åé "); |
| | | strB.append(diffSeconds + " ç§ "); |
| | | } else if (diffHours > 0) { |
| | | strB.append(diffHours + " å°æ¶ "); |
| | | strB.append(diffMinutes + " åé "); |
| | | strB.append(diffSeconds + " ç§ "); |
| | | } else if (diffMinutes > 0) { |
| | | strB.append(diffMinutes + " åé "); |
| | | strB.append(diffSeconds + " ç§ "); |
| | | } else { |
| | | strB.append(diffSeconds + " ç§ "); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return strB.toString(); |
| | | } |
| | | |
| | | /** |
| | | * @return è·å两个dateçæ¶é´å·®ï¼ç»æä¸ºç§ é¤ |
| | | */ |
| | | public static long differentSecond(Date startDate, Date endDate) { |
| | | return new BigDecimal(endDate.getTime() - startDate.getTime()).divide(new BigDecimal("1000"), 0, BigDecimal.ROUND_HALF_UP).longValue(); |
| | | // return (endDate.getTime() - startDate.getTime()) / 1000; |
| | | } |
| | | |
| | | /** |
| | | * @return è·å两个dateçæ¶é´å·®ï¼ç»æä¸ºåé |
| | | */ |
| | | public static Integer differentMinutes(Date startDate, Date endDate) { |
| | | return new BigDecimal(endDate.getTime() - startDate.getTime()).divide(new BigDecimal("60000"), 0, RoundingMode.HALF_UP).intValue(); |
| | | } |
| | | |
| | | /** |
| | | * @return è¿åä¼ å
¥æ¶é´ç0ç¹0å0ç§ |
| | | */ |
| | | public static Date getTodayZero(Date d) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(d); |
| | | cal.set(Calendar.HOUR_OF_DAY, 0); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @return è¿åä¼ å
¥æ¶é´ç0ç¹0å0ç§ |
| | | */ |
| | | public static Date getTomorrowZero(Date d) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(d); |
| | | cal.set(Calendar.HOUR_OF_DAY, 0); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | cal.add(Calendar.DAY_OF_MONTH, 1); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @return 夿æ¶é´æ¯å¦æ¯å½å¤© |
| | | */ |
| | | public static boolean isTaday(Date date) { |
| | | Date now = new Date(); |
| | | SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd"); |
| | | String nowDay = sf.format(now); |
| | | String day = sf.format(date); |
| | | return day.equals(nowDay); |
| | | } |
| | | |
| | | /** |
| | | * @return å¤æä¸¤ä¸ªæ¶é´æ¯å¦ä¸ºåä¸å¤© |
| | | */ |
| | | public static boolean isOneDay(Date d1, Date d2) { |
| | | SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd"); |
| | | String d1Str = sf.format(d1); |
| | | String d2Str = sf.format(d2); |
| | | return d1Str.equals(d2Str); |
| | | } |
| | | |
| | | /** |
| | | * @return å¤æä¸¤ä¸ªæ¶é´æ¯å¦ä¸ºåä¸å¹´ |
| | | */ |
| | | public static boolean isOneYear(Date d1, Date d2) { |
| | | SimpleDateFormat sf = new SimpleDateFormat("yyyy"); |
| | | String d1Str = sf.format(d1); |
| | | String d2Str = sf.format(d2); |
| | | return d1Str.equals(d2Str); |
| | | } |
| | | |
| | | public static String dateProportion(Date start, Date end) { |
| | | float differentSecond = DateUtils.differentSecond(start, end); |
| | | float f = differentSecond / DAYTIMESUNSET * 100; |
| | | return String.format("%.2f", f) + "%"; |
| | | } |
| | | |
| | | public static Date strToDate(String dateStr, String format) { |
| | | SimpleDateFormat sf = new SimpleDateFormat(format); |
| | | Date result = null; |
| | | try { |
| | | result = sf.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static final String STR_DATE = "yyyy-MM-dd"; |
| | | public static final String STRDATE = "yyyyMMdd"; |
| | | public static final String STR_YEAR_MONTH = "yyyy-MM"; |
| | | public static final String STRYEARMONTH = "yyyyMM"; |
| | | public static final String STR_DATE_TIME = "yyyy-MM-dd HH:mm:ss.SSS"; |
| | | public static final String STR_DATE_TIME_SMALL = "yyyy-MM-dd HH:mm:ss"; |
| | | public static final String STR_DATE_TIME_MIN = "yyyy-MM-dd HH:mm"; |
| | | public static final String STR_DATE_TIME_HOUR = "yyyy-MM-dd HH"; |
| | | public static final String STR_DATE_TIME_FULL = "yyyyMMddHHmmssSSS"; |
| | | public static final String STR_HHMMSS = "HH:mm:ss"; |
| | | public static final String STR_HHMM = "HH:mm"; |
| | | public static final String STR_MMDD = "MM-dd"; |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: å®é
ææ æä»½ |
| | | * </p> |
| | | * |
| | | * @param startDate |
| | | * @param endDate |
| | | * @return obj [0] å®é
ææ æä»½ ä¾å¦å®é
ææ æä»½ï¼3.86ï¼æä¹æ¯3个æå26天 obj[1] å®é
åæ´æä»½ ï¼3ï¼ |
| | | */ |
| | | public static Integer getRealMonth(Date startDate, Date endDate) { |
| | | Integer month = 0; |
| | | Calendar start = Calendar.getInstance(); |
| | | start.setTime(startDate); |
| | | |
| | | Calendar end = Calendar.getInstance(); |
| | | end.setTime(endDate); |
| | | int year = start.get(Calendar.YEAR); |
| | | int year2 = end.get(Calendar.YEAR); |
| | | int month2 = start.get(Calendar.MONTH); |
| | | int month3 = end.get(Calendar.MONTH); |
| | | try { |
| | | while (start.before(end)) { |
| | | start.add(Calendar.MONTH, 1); |
| | | month++; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | int day2 = start.get(Calendar.DAY_OF_MONTH); |
| | | int day3 = end.get(Calendar.DAY_OF_MONTH); |
| | | int tmpYear = year2 - year; |
| | | if (day2 == day3) { |
| | | return (tmpYear * 12) + (month3 - month2); |
| | | } |
| | | return month == 0 ? month : (month - 1); |
| | | } |
| | | |
| | | public static Date getNow() { |
| | | return new Date(System.currentTimeMillis()); |
| | | } |
| | | |
| | | public static int getDayOfMonth() { |
| | | Calendar aCalendar = Calendar.getInstance(Locale.CHINA); |
| | | int day = aCalendar.getActualMaximum(Calendar.DATE); |
| | | return day; |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: ä¿®æ¹æ¶é´ä¸ºæå®æ¶é´å½å¤©ç23:59:59.000 |
| | | * </p> |
| | | * |
| | | * @param date éè¦ä¿®æ¹çæ¶é´ |
| | | * @return ä¿®æ¹åçæ¶é´ |
| | | */ |
| | | public static Date fillTime(Date date) { |
| | | Date result = removeTime(date); |
| | | result.setTime(result.getTime() + 24 * 60 * 60 * 1000 - 1000); // å ä¸å¤© |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * @param date å½åæ¶é´ |
| | | * @param i å¾åå 天 |
| | | * @return |
| | | */ |
| | | public static Date fillBeforeTime(Date date, Integer i) { |
| | | Date result = removeTime(date); |
| | | Calendar calendar = Calendar.getInstance(); // å¾å°æ¥å |
| | | calendar.setTime(result);// æå½åæ¶é´èµç»æ¥å |
| | | calendar.add(Calendar.DAY_OF_MONTH, i); // 设置为åä¸å¤© |
| | | result.setTime(calendar.getTime().getTime() + 24 * 60 * 60 * 1000 |
| | | - 1000); // å ä¸å¤© |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: ä¿®æ¹æ¶é´ä¸ºæå®æ¶é´åä¸å¤©ç00:00:00 |
| | | * </p> |
| | | * |
| | | * @param date éè¦ä¿®æ¹çæ¶é´ |
| | | * @return ä¿®æ¹åçæ¶é´ |
| | | */ |
| | | public static Date plusTime(Date date, Integer i) { |
| | | Date result = removeTime(date); |
| | | Calendar calendar = Calendar.getInstance(); // å¾å°æ¥å |
| | | calendar.setTime(result);// æå½åæ¶é´èµç»æ¥å |
| | | calendar.add(Calendar.DAY_OF_MONTH, i); // 设置为åä¸å¤© |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: å»ææ¥ææ¶é´ä¸çæ¶é´é¨å |
| | | * </p> |
| | | * å¦: 2013-11-11 18:56:33 ---> 2013-11-11 00:00:00 |
| | | * |
| | | * @param date éè¦ä¿®æ¹çæ¶é´ |
| | | * @return ä¿®æ¹åçæ¶é´ |
| | | */ |
| | | public static Date removeTime(Date date) { |
| | | Date result = null; |
| | | try { |
| | | SimpleDateFormat df = new SimpleDateFormat(STR_DATE); |
| | | String dateStr = df.format(date); |
| | | result = df.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: æé»è®¤æ ¼å¼(yyyy-MM-dd HH:mm:ss.SSS)è·åæ¶é´å符串 |
| | | * </p> |
| | | * |
| | | * @param date è¦è½¬æ¢çæ¥æ |
| | | * @return 转æ¢åçæ¶é´å符串 |
| | | */ |
| | | public static String format(Date date) { |
| | | SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME); |
| | | return df.format(date); |
| | | } |
| | | |
| | | public static Date parseDate(Date date, String format) { |
| | | SimpleDateFormat df = new SimpleDateFormat(format); |
| | | try { |
| | | date = df.parse(df.format(date)); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return date; |
| | | } |
| | | |
| | | public static Date getDelayedYear() { |
| | | Calendar curr = Calendar.getInstance(); |
| | | curr.set(Calendar.YEAR, curr.get(Calendar.YEAR) + 1); |
| | | Date date = curr.getTime(); |
| | | return date; |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: ææå®æ ¼å¼è·åæ¶é´å符串 |
| | | * </p> |
| | | * |
| | | * @param date è¦è½¬æ¢çæ¥æ |
| | | * @param format æ ¼å¼,ä¾å¦:yyyy-MM-dd HH:mm:ss.SSS |
| | | * @return 转æ¢åçæ¶é´å符串 |
| | | */ |
| | | public static String format(Date date, String format) { |
| | | SimpleDateFormat df = new SimpleDateFormat(format); |
| | | return df.format(date); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Description: å æå½æ° |
| | | * </p> |
| | | * |
| | | * @param month æä»½æ° |
| | | * @return |
| | | */ |
| | | public static Date addMonth(Integer month, Date time) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(time); |
| | | c.add(Calendar.MONTH, month); |
| | | return c.getTime(); |
| | | } |
| | | |
| | | public static Boolean greater(Date startTime, Date endTime) { |
| | | return startTime.getTime() > endTime.getTime(); |
| | | } |
| | | |
| | | public static Boolean less(Date startTime, Date endTime) { |
| | | return startTime.getTime() < endTime.getTime(); |
| | | } |
| | | |
| | | public static Boolean equals(Date startTime, Date endTime) { |
| | | return startTime.getTime() == endTime.getTime(); |
| | | } |
| | | |
| | | public static Integer getDiffMonth(Calendar c, Calendar c1) { |
| | | return (c.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12 |
| | | + (c.get(Calendar.MONTH) - c1.get(Calendar.MONTH)); |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦ä¸ºåä¸å¤© |
| | | */ |
| | | public static boolean equalsDay(Date a, Date b) { |
| | | return removeTime(a).getTime() == removeTime(b).getTime(); |
| | | } |
| | | |
| | | public static Integer getDays(Date startTime, Date endTime) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | Calendar c1 = Calendar.getInstance(); |
| | | c1.setTime(endTime); |
| | | long t1 = c.getTimeInMillis(); |
| | | long t2 = c1.getTimeInMillis(); |
| | | // 计ç®å¤©æ° |
| | | Long days = (t2 - t1) / (24 * 60 * 60 * 1000); |
| | | return days.intValue(); |
| | | } |
| | | |
| | | public static Integer getSeconds(Date startTime, Date endTime) { |
| | | try { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | Calendar c1 = Calendar.getInstance(); |
| | | c1.setTime(endTime); |
| | | long t1 = c.getTimeInMillis(); |
| | | long t2 = c1.getTimeInMillis(); |
| | | // 计ç®ç§æ° |
| | | Long days = (t2 - t1) / (1000); |
| | | return days.intValue(); |
| | | } catch (Exception e) { |
| | | return 0; |
| | | } |
| | | |
| | | } |
| | | |
| | | //è·åå°æ¶å·® |
| | | public static double subHours(Date startTime, Date endTime) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | Calendar c1 = Calendar.getInstance(); |
| | | c1.setTime(endTime); |
| | | double t1 = c.getTimeInMillis(); |
| | | double t2 = c1.getTimeInMillis(); |
| | | // 计ç®å¤©æ° |
| | | double hours = (t2 - t1) / (1000 * 60 * 60); |
| | | return Double.valueOf(new DecimalFormat("#.00").format(hours)); |
| | | } |
| | | |
| | | //æ ¹æ®å½åæ¶é´ååºçæ¥æè·åå¹´é¾ |
| | | public static int getAge(Date birthDay) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | // ååºç³»ç»å½åæ¶é´çå¹´ãæãæ¥é¨å |
| | | int yearNow = cal.get(Calendar.YEAR); |
| | | int monthNow = cal.get(Calendar.MONTH); |
| | | int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); |
| | | cal.setTime(birthDay); |
| | | // ååºåºçæ¥æçå¹´ãæãæ¥é¨å |
| | | int yearBirth = cal.get(Calendar.YEAR); |
| | | int monthBirth = cal.get(Calendar.MONTH); |
| | | int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); |
| | | // å½å年份ä¸åºç年份ç¸åï¼åæ¥è®¡ç®å¹´é¾ |
| | | int age = yearNow - yearBirth; |
| | | // å½åæä»½ä¸åºçæ¥æçæä»½ç¸æ¯ï¼å¦ææä»½å°äºåºçæä»½ï¼åå¹´é¾ä¸å1ï¼è¡¨ç¤ºä¸æ»¡å¤å°å¨å² |
| | | if (monthNow <= monthBirth) { |
| | | // 妿æä»½ç¸çï¼å¨æ¯è¾æ¥æï¼å¦æå½åæ¥ï¼å°äºåºçæ¥ï¼ä¹å1ï¼è¡¨ç¤ºä¸æ»¡å¤å°å¨å² |
| | | if (monthNow == monthBirth) { |
| | | if (dayOfMonthNow < dayOfMonthBirth) { |
| | | age--; |
| | | } |
| | | } else { |
| | | age--; |
| | | } |
| | | |
| | | } |
| | | return age; |
| | | } |
| | | |
| | | public static Date subDays(Date startTime, Integer day) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | c.add(Calendar.DATE, day * -1); |
| | | return c.getTime(); |
| | | } |
| | | |
| | | public static Date addDays(Date startTime, Integer day) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | c.add(Calendar.DATE, day); |
| | | return c.getTime(); |
| | | } |
| | | /*public static Date addHours(Date startTime, Integer hours) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(startTime); |
| | | c.add(Calendar.HOUR, hours ); |
| | | return c.getTime(); |
| | | }*/ |
| | | |
| | | public static Date toDate(String date, String format) { |
| | | SimpleDateFormat df = new SimpleDateFormat(format); |
| | | try { |
| | | return df.parse(date); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static Date toDateFull(String date) { |
| | | SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME); |
| | | try { |
| | | return df.parse(date); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static Date toDateMedium(String date) { |
| | | SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME_SMALL); |
| | | try { |
| | | Date dd = df.parse(date); |
| | | return dd; |
| | | } catch (ParseException e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static Integer getDate(Date date) { |
| | | if (date != null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | int day = calendar.get(Calendar.DATE); |
| | | return day; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static Integer getYear() { |
| | | return getYear(new Date()); |
| | | } |
| | | |
| | | public static Integer getYear(Date date) { |
| | | if (date != null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | int year = calendar.get(Calendar.YEAR); |
| | | return year; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static Integer getMonth() { |
| | | return getMonth(new Date()); |
| | | } |
| | | |
| | | public static Integer getMonth(Date date) { |
| | | if (date != null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | int month = calendar.get(Calendar.MONTH); |
| | | return month + 1; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static Integer getDay() { |
| | | return getDay(new Date()); |
| | | } |
| | | |
| | | public static Integer getDay(Date date) { |
| | | if (date != null) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | int day = calendar.get(Calendar.DAY_OF_MONTH); |
| | | return day; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public static Date[] getMonthStartTimeAndEndTime(Integer month) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | Date[] dates = new Date[2]; |
| | | Date startTime = null; |
| | | Date endsTime = null; |
| | | if (month != null) { |
| | | calendar.set(Calendar.MONTH, month); |
| | | //è·å¾å°æ¬æç第ä¸å¤© |
| | | calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); |
| | | startTime = calendar.getTime(); |
| | | startTime = DateUtils.removeTime(startTime); |
| | | //è·å¾å°æ¬æçæåä¸å¤© |
| | | calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | endsTime = calendar.getTime(); |
| | | endsTime = DateUtils.fillTime(endsTime); |
| | | } |
| | | dates[0] = startTime; |
| | | dates[1] = endsTime; |
| | | return dates; |
| | | } |
| | | |
| | | public static Date[] getMonthStartTimeAndEndTime(Date date) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | Integer month = calendar.get(Calendar.MONTH); |
| | | Date[] dates = new Date[2]; |
| | | Date startTime = null; |
| | | Date endsTime = null; |
| | | if (month != null) { |
| | | calendar.set(Calendar.MONTH, month); |
| | | //è·å¾å°æ¬æç第ä¸å¤© |
| | | calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); |
| | | startTime = calendar.getTime(); |
| | | startTime = DateUtils.removeTime(startTime); |
| | | //è·å¾å°æ¬æçæåä¸å¤© |
| | | calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | endsTime = calendar.getTime(); |
| | | endsTime = DateUtils.fillTime(endsTime); |
| | | } |
| | | dates[0] = startTime; |
| | | dates[1] = endsTime; |
| | | return dates; |
| | | } |
| | | |
| | | /** |
| | | * è·ådayså¤©çæ¶é´åºé´ï¼endTime 为å½å¤©çåä¸å¤©0ç¹ï¼ |
| | | * startTime 为endTimeådays天 |
| | | * |
| | | * @param days |
| | | * @return |
| | | */ |
| | | public static Date[] getDaysStartTimeAndEndTime(Integer days) { |
| | | Date[] dates = new Date[2]; |
| | | Date endDate = plusTime(removeTime(getNow()), 1); |
| | | Date startDate = subDays(endDate, days); |
| | | dates[0] = startDate; |
| | | dates[1] = endDate; |
| | | return dates; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æä¸å¹´è·åæåä¸å¤©çæ¶é´ |
| | | * 2013 ---> 2013-12-31 23:59:59.000 |
| | | * |
| | | * @param year |
| | | * @return |
| | | */ |
| | | public static Date getYearEndDay(Integer year) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.clear(); |
| | | calendar.set(Calendar.YEAR, year); |
| | | calendar.roll(Calendar.DAY_OF_YEAR, -1); |
| | | Date yearLast = calendar.getTime(); |
| | | Date lastYear = DateUtils.fillTime(yearLast); |
| | | return lastYear; |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼yyyy-MM-dd |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDatesStringList(Date start, Date end, String strDate) { |
| | | List<String> list = new ArrayList<>(); |
| | | int i = getDays(start, end); |
| | | for (int j = 0; j <= i; j++) { |
| | | if (j == 0) { |
| | | list.add(format(start, strDate)); |
| | | } else { |
| | | list.add(format(plusTime(start, j), strDate)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼yyyy-MM-dd |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDatesStringList(Date start, Date end) { |
| | | List<String> list = new ArrayList<>(); |
| | | int i = getDays(start, end); |
| | | for (int j = 0; j <= i; j++) { |
| | | if (j == 0) { |
| | | list.add(format(start, STR_DATE)); |
| | | } else { |
| | | list.add(format(plusTime(start, j), STR_DATE)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼yyyyMMdd |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDatesStringList2(Date start, Date end) { |
| | | List<String> list = new ArrayList<>(); |
| | | int i = getDays(start, end); |
| | | for (int j = 0; j <= i; j++) { |
| | | if (j == 0) { |
| | | list.add(format(start, STRDATE)); |
| | | } else { |
| | | list.add(format(plusTime(start, j), STRDATE)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼MM-dd |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDatesStringLists(Date start, Date end) { |
| | | List<String> list = new ArrayList<>(); |
| | | int i = getDays(start, end); |
| | | for (int j = 0; j <= i; j++) { |
| | | if (j == 0) { |
| | | list.add(format(start, STR_MMDD)); |
| | | } else { |
| | | list.add(format(plusTime(start, j), STR_MMDD)); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public static List<String> getMonthBetween(Date start, Date end) { |
| | | List<String> list = new ArrayList<>(); |
| | | Calendar min = Calendar.getInstance(); |
| | | Calendar max = Calendar.getInstance(); |
| | | min.setTime(start); |
| | | min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1); |
| | | max.setTime(end); |
| | | max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2); |
| | | Calendar curr = min; |
| | | while (curr.before(max)) { |
| | | list.add(format(curr.getTime(), STR_YEAR_MONTH)); |
| | | curr.add(Calendar.MONTH, 1); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·ådateStrçæ¥ææ ¼å¼yyyy-MM-dd |
| | | * |
| | | * @param dateStr |
| | | * @return |
| | | */ |
| | | public static Date getShortDate(String dateStr) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat(STR_DATE); |
| | | Date startTime = null; |
| | | try { |
| | | startTime = sdf.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | } |
| | | return startTime == null ? removeTime(new Date()) : startTime; |
| | | } |
| | | |
| | | /** |
| | | * è·ådateStrçæ¥ææ ¼å¼yyyyMMdd |
| | | * |
| | | * @param dateStr |
| | | * @return |
| | | */ |
| | | public static Date getShortDate2(String dateStr) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat(STRDATE); |
| | | Date startTime = null; |
| | | try { |
| | | startTime = sdf.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | } |
| | | return startTime == null ? removeTime(new Date()) : startTime; |
| | | } |
| | | |
| | | public static Date getFormatDate(String dateStr, String format) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat(format); |
| | | Date startTime = null; |
| | | try { |
| | | startTime = sdf.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | } |
| | | return startTime == null ? removeTime(new Date()) : startTime; |
| | | } |
| | | |
| | | /** |
| | | * @param time |
| | | * @param n |
| | | * @return å¨ä¸ä¸ªæ¶é´ä¸å ç§ |
| | | */ |
| | | public static Date addSecond(Date time, Integer n) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(time); |
| | | c.add(Calendar.SECOND, n); |
| | | return c.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @param time |
| | | * @param n |
| | | * @return å¨ä¸ä¸ªæ¶é´ä¸å åé |
| | | */ |
| | | public static Date addMinute(Date time, Integer n) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(time); |
| | | c.add(Calendar.MINUTE, n); |
| | | return c.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @param time |
| | | * @param n |
| | | * @return å¨ä¸ä¸ªæ¶é´ä¸å å°æ¶ |
| | | */ |
| | | public static Date addHour(Date time, Integer n) { |
| | | Calendar c = Calendar.getInstance(); |
| | | c.setTime(time); |
| | | c.add(Calendar.HOUR_OF_DAY, n); |
| | | return c.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼yyyy-MM-dd |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDateMonth(String start, String end) { |
| | | List<String> list = new ArrayList<>(); |
| | | SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyy-MM"); |
| | | Date startyear = null; |
| | | try { |
| | | startyear = yyyyMM.parse(start); |
| | | Date endyear = yyyyMM.parse(end); |
| | | Calendar dd = Calendar.getInstance();//å®ä¹æ¥æå®ä¾ |
| | | dd.setTime(startyear);//è®¾ç½®æ¥æèµ·å§æ¶é´ |
| | | while (dd.getTime().before(endyear)) {//夿æ¯å¦å°ç»ææ¥æ |
| | | String str = yyyyMM.format(dd.getTime()); |
| | | dd.add(Calendar.MONTH, 1);//è¿è¡å½åæ¥ææä»½å 1 |
| | | list.add(str); |
| | | } |
| | | list.add(yyyyMM.format(endyear)); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åstart/endçæææ¥æå符串 æ ¼å¼yyyy |
| | | * |
| | | * @param start |
| | | * @param end |
| | | * @return |
| | | */ |
| | | public static List<String> getDateYear(String start, String end) { |
| | | List<String> list = new ArrayList<>(); |
| | | SimpleDateFormat yyyy = new SimpleDateFormat("yyyy"); |
| | | Date startyear = null; |
| | | try { |
| | | startyear = yyyy.parse(start); |
| | | Date endyear = yyyy.parse(end); |
| | | Calendar dd = Calendar.getInstance();//å®ä¹æ¥æå®ä¾ |
| | | dd.setTime(startyear);//è®¾ç½®æ¥æèµ·å§æ¶é´ |
| | | while (dd.getTime().before(endyear)) {//夿æ¯å¦å°ç»ææ¥æ |
| | | String str = yyyy.format(dd.getTime()); |
| | | dd.add(Calendar.YEAR, 1);//è¿è¡å½åæ¥ææä»½å 1 |
| | | list.add(str); |
| | | } |
| | | list.add(yyyy.format(endyear)); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åæ¶é´ å®ä½å°å°æ¶ |
| | | * æ ¼å¼ä¸º yyyy-MM-dd hh:mm |
| | | * ä¾ï¼2018-02-27 11:00 |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getNowHourDate() { |
| | | Date now = getNow(); |
| | | Date result; |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(now); |
| | | int hour = calendar.get(Calendar.HOUR_OF_DAY); |
| | | String dateStr = format(now, STR_DATE); |
| | | dateStr = dateStr + " " + (hour < 10 ? "0" + hour : hour) + ":00"; |
| | | result = toDate(dateStr, STR_DATE_TIME_MIN); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¯æ¥8:11æ11:11çæ¶é´ç¹ |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getNowHourDateTo() { |
| | | Date now = getNow(); |
| | | Date result; |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(now); |
| | | int hour = calendar.get(Calendar.HOUR_OF_DAY); |
| | | if (hour != 8 && hour != 11) { |
| | | return null; |
| | | } |
| | | int minute = calendar.get(Calendar.MINUTE); |
| | | if (minute < 11) { |
| | | return null; |
| | | } |
| | | String dateStr = format(now, STR_DATE); |
| | | dateStr = dateStr + " " + (hour < 10 ? "0" + hour : hour) + ":11"; |
| | | result = toDate(dateStr, STR_DATE_TIME_MIN); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¯æ¥8:00ã13:00ã20:00çæ¶é´ç¹ |
| | | * |
| | | * @return |
| | | */ |
| | | public static List<Date> getHourDateList(Date time) { |
| | | List<Date> result = new ArrayList<>(); |
| | | result.add(addHour(time, 8)); |
| | | result.add(addHour(time, 13)); |
| | | result.add(addHour(time, 20)); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * è·å䏿çæåä¸å¤© |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getPreviousMonthLastDay() { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.DAY_OF_MONTH, 0); |
| | | return DateUtils.removeTime(calendar.getTime()); |
| | | } |
| | | |
| | | /** |
| | | * è·åendæ¶é´æç第ä¸å¤© |
| | | * |
| | | * @param end æä»½æåä¸å¤© |
| | | * @return |
| | | */ |
| | | public static Date getTheMonthFirstDay(Date end) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(end); |
| | | calendar.set(Calendar.DAY_OF_MONTH, 1); |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | public static String secToTimeHour(int time) { |
| | | String timeStr = null; |
| | | int hour = 0; |
| | | if (time <= 0) { |
| | | return "0å°æ¶"; |
| | | } else { |
| | | BigDecimal bigDecimal = new BigDecimal(time); |
| | | BigDecimal bigDecimal1 = new BigDecimal(3600); |
| | | BigDecimal hourBigDecimal = new BigDecimal(0); |
| | | hourBigDecimal = new BigDecimal(String.valueOf(bigDecimal)). |
| | | divide(new BigDecimal(String.valueOf(bigDecimal1)), 2, BigDecimal.ROUND_HALF_UP); |
| | | timeStr = hourBigDecimal + "å°æ¶"; |
| | | } |
| | | return timeStr; |
| | | } |
| | | |
| | | public static String secToTime(int time) { |
| | | String timeStr = null; |
| | | int hour = 0; |
| | | int minute = 0; |
| | | int second = 0; |
| | | if (time <= 0) |
| | | return " "; |
| | | else { |
| | | minute = time / 60; |
| | | if (minute < 60) { |
| | | second = time % 60; |
| | | timeStr = unitFormat(minute) + "å" + unitFormat(second) + " ç§"; |
| | | } else { |
| | | hour = minute / 60; |
| | | minute = minute % 60; |
| | | second = time - hour * 3600 - minute * 60; |
| | | timeStr = unitFormat(hour) + "å°æ¶" + unitFormat(minute) + "å" + unitFormat(second) + "ç§"; |
| | | } |
| | | } |
| | | return timeStr; |
| | | } |
| | | |
| | | public static String unitFormat(int i) { |
| | | String retStr = null; |
| | | if (i >= 0 && i < 10) |
| | | retStr = "0" + Integer.toString(i); |
| | | else |
| | | retStr = "" + i; |
| | | return retStr; |
| | | } |
| | | |
| | | /** |
| | | * éªè¯æ¶é´ |
| | | * |
| | | * @param time æ¶é´å符串 HH:mm |
| | | * @return éªè¯æåè¿åtrueï¼éªè¯å¤±è´¥è¿åfalse |
| | | */ |
| | | public static boolean checkTime(String time) { |
| | | String regex = "([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"; |
| | | return Pattern.matches(regex, time); |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¯æ¥07:30:00çæ¶é´ç¹ |
| | | * æ ¼å¼ä¸º yyyy-MM-dd HH:mm:ss |
| | | * ä¾ï¼2018-05-28 07:30:00 |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getHourDateTo(Date now, String time) { |
| | | String dateStr = format(now, STR_DATE); |
| | | dateStr = dateStr + " " + time; |
| | | Date result = toDate(dateStr, STR_DATE_TIME_SMALL); |
| | | return result; |
| | | } |
| | | |
| | | public static Date setTimeForDay(Date theDate, String planTime) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(theDate); |
| | | String[] times = planTime.split(":"); |
| | | cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0])); |
| | | cal.set(Calendar.MINUTE, Integer.parseInt(times[1])); |
| | | cal.set(Calendar.SECOND, Integer.parseInt(times[2])); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | public static long getTimeWithOutDay(Date d) { |
| | | return d.getTime() / 1000 % 86400; |
| | | } |
| | | |
| | | /** |
| | | * @param lo æ¯«ç§æ° |
| | | * @return String yyyy-MM-dd HH:mm:ss |
| | | * @Description: longç±»åè½¬æ¢ææ¥æ |
| | | */ |
| | | public static String longToDate(long lo) { |
| | | Date date = new Date(lo); |
| | | SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | return sd.format(date); |
| | | } |
| | | |
| | | /** |
| | | * @param startDate |
| | | * @param endDate |
| | | * @return |
| | | */ |
| | | public static List<Date> getWeekDays(LocalDate startDate, LocalDate endDate) { |
| | | List<Date> result = new ArrayList<>(); |
| | | List<LocalDate> dateList = Stream.iterate(startDate, localDate -> localDate.plusDays(1)) |
| | | .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1) |
| | | .filter(localDate -> DayOfWeek.SATURDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))) || DayOfWeek.SUNDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK)))) |
| | | .collect(Collectors.toList()); |
| | | dateList.forEach(localDate -> result.add(Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()))); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * @param smallDate |
| | | * @param bigDate |
| | | * @desc è·åä¸¤ä¸ªæ¥æä¹é´çå¤©æ° |
| | | */ |
| | | public static Integer getDaysBetween(String smallDate, String bigDate) throws ParseException { |
| | | // æ¥ææ ¼å¼ |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | // è·åä¸¤ä¸ªæ¥æçæ¶é´æ³ |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(sdf.parse(smallDate)); |
| | | long smallTime = cal.getTimeInMillis(); |
| | | cal.setTime(sdf.parse(bigDate)); |
| | | long bigTime = cal.getTimeInMillis(); |
| | | // ç¸å·®çæ¥æ |
| | | long days = (bigTime - smallTime) / (1000 * 3600 * 24); |
| | | // long转int å卿º¢åºæ
åµ æ ¹æ®ä¸å¡æ
åµç¼è¾catchä¸è¿åå¼ |
| | | try { |
| | | return Integer.parseInt(String.valueOf(days)); |
| | | } catch (NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ¥æè½¬æ¢ï¼å°æ¥å£è¿åç20180524转为2018-05-24 |
| | | * |
| | | * @param str |
| | | * @return |
| | | */ |
| | | public static String dateConvertion(String str) { |
| | | Date parse = null; |
| | | String dateString = ""; |
| | | try { |
| | | parse = new SimpleDateFormat("yyyyMMdd").parse(str); |
| | | dateString = new SimpleDateFormat("yyyy-MM-dd").format(parse); |
| | | } catch (ParseException e) { |
| | | dateString = null; |
| | | } |
| | | |
| | | return dateString; |
| | | } |
| | | |
| | | /** |
| | | * Dateä¸LocalDateTimeäºç¸è½¬æ¢çå·¥å
·æ¹æ³ |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | | public static LocalDateTime convertToLocalDateTime(Date date) { |
| | | if (date == null) { |
| | | return null; |
| | | } |
| | | return Instant.ofEpochMilli(date.getTime()) |
| | | .atZone(ZoneId.systemDefault()) |
| | | .toLocalDateTime(); |
| | | } |
| | | |
| | | /** |
| | | * Dateä¸LocalDateTimeäºç¸è½¬æ¢çå·¥å
·æ¹æ³ |
| | | * |
| | | * @param localDateTime |
| | | * @return |
| | | */ |
| | | public static Date convertToDate(LocalDateTime localDateTime) { |
| | | if (localDateTime == null) { |
| | | return null; |
| | | } |
| | | return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); |
| | | } |
| | | } |