¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yssh.utils; |
| | | |
| | | import java.lang.management.ManagementFactory; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | |
| | | public class DateUtils extends org.apache.commons.lang3.time.DateUtils { |
| | | public static String YYYY = "yyyy"; |
| | | |
| | | public static String YYYY_MM = "yyyy-MM"; |
| | | |
| | | public static String YYYY_MM_DD = "yyyy-MM-dd"; |
| | | |
| | | public static String YYYYMM = "yyyyMM"; |
| | | |
| | | public static String YYYYMMDD = "yyyyMMdd"; |
| | | |
| | | public static String YYYYMMDDHH = "yyyyMMddHH"; |
| | | |
| | | public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; |
| | | |
| | | public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; |
| | | |
| | | public static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; |
| | | |
| | | public static String YYYY_MM_DD_HH = "yyyy-MM-dd HH"; |
| | | |
| | | private static String[] parsePatterns = {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", |
| | | "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", |
| | | "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
| | | |
| | | public static Date getNowDate() { |
| | | return new Date(); |
| | | } |
| | | |
| | | public static String getDate() { |
| | | return dateTimeNow(YYYY_MM_DD); |
| | | } |
| | | |
| | | public static final String getTime() { |
| | | return dateTimeNow(YYYY_MM_DD_HH_MM_SS); |
| | | } |
| | | |
| | | public static final String dateTimeNow() { |
| | | return dateTimeNow(YYYYMMDDHHMMSS); |
| | | } |
| | | |
| | | public static final String dateTimeNow(final String format) { |
| | | return parseDateToStr(format, new Date()); |
| | | } |
| | | |
| | | public static final String dateTime(final Date date) { |
| | | return parseDateToStr(YYYY_MM_DD, date); |
| | | } |
| | | |
| | | public static final String parseDateToStr(final String format, final Date date) { |
| | | return new SimpleDateFormat(format).format(date); |
| | | } |
| | | |
| | | public static final Date dateTime(final String format, final String ts) { |
| | | try { |
| | | return new SimpleDateFormat(format).parse(ts); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | public static String getYyyyMm(Date date) { |
| | | return new SimpleDateFormat(YYYYMM).format(date); |
| | | } |
| | | |
| | | public static String getYyyyMmDd(Date date) { |
| | | return new SimpleDateFormat(YYYYMMDD).format(date); |
| | | } |
| | | |
| | | public static String getYyyyMmDdHh(Date date) { |
| | | return new SimpleDateFormat(YYYYMMDDHH).format(date); |
| | | } |
| | | |
| | | public static String getYyyyMmDdHhMmSs(Date date) { |
| | | return new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS).format(date); |
| | | } |
| | | |
| | | /** |
| | | * æ¥æè·¯å¾ å³å¹´/æ/æ¥ å¦2018/08/08 |
| | | */ |
| | | public static final String datePath() { |
| | | Date now = new Date(); |
| | | return DateFormatUtils.format(now, "yyyy/MM/dd"); |
| | | } |
| | | |
| | | /** |
| | | * æ¥æè·¯å¾ å³å¹´/æ/æ¥ å¦20180808 |
| | | */ |
| | | public static final String dateTime() { |
| | | Date now = new Date(); |
| | | return DateFormatUtils.format(now, "yyyyMMdd"); |
| | | } |
| | | |
| | | /** |
| | | * æ¥æåå符串转åä¸ºæ¥æ æ ¼å¼ |
| | | */ |
| | | public static Date parseDate(Object str) { |
| | | if (str == null) { |
| | | return null; |
| | | } |
| | | try { |
| | | return parseDate(str.toString(), parsePatterns); |
| | | } catch (ParseException e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åæå¡å¨å¯å¨æ¶é´ |
| | | */ |
| | | public static Date getServerStartDate() { |
| | | long time = ManagementFactory.getRuntimeMXBean().getStartTime(); |
| | | return new Date(time); |
| | | } |
| | | |
| | | /** |
| | | * 计ç®ä¸¤ä¸ªæ¶é´å·® |
| | | */ |
| | | public static String getDatePoor(Date endDate, Date nowDate) { |
| | | long nd = 1000 * 24 * 60 * 60; |
| | | long nh = 1000 * 60 * 60; |
| | | long nm = 1000 * 60; |
| | | // long ns = 1000; |
| | | // è·å¾ä¸¤ä¸ªæ¶é´çæ¯«ç§æ¶é´å·®å¼ |
| | | long diff = endDate.getTime() - nowDate.getTime(); |
| | | // 计ç®å·®å¤å°å¤© |
| | | long day = diff / nd; |
| | | // 计ç®å·®å¤å°å°æ¶ |
| | | long hour = diff % nd / nh; |
| | | // 计ç®å·®å¤å°åé |
| | | long min = diff % nd % nh / nm; |
| | | // 计ç®å·®å¤å°ç§//è¾åºç»æ |
| | | // long sec = diff % nd % nh % nm / ns; |
| | | return day + "天" + hour + "å°æ¶" + min + "åé"; |
| | | } |
| | | |
| | | /** |
| | | * @throws |
| | | * @Title: differHour |
| | | * @Description: è·å两个æ¶é´å·®å ä¸ªå°æ¶ |
| | | * @param: @param endDate |
| | | * @param: @param nowDate |
| | | * @param: @return |
| | | * @return: long |
| | | */ |
| | | public static int differDay(Date startDate, Date endDate) { |
| | | long nd = 1000 * 24 * 60 * 60; |
| | | long diff = endDate.getTime() - startDate.getTime(); |
| | | double dd = Double.valueOf(String.valueOf(diff)) / nd; |
| | | // 计ç®å·®å¤å°å¤© |
| | | return Double.valueOf(Math.ceil(dd)).intValue(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: è·å䏿®µæ¶é´é´é |
| | | * @param:date éè¦æä½çæ¶é´å¯¹è±¡ |
| | | * @param:day æä½çæ¶é´é´é |
| | | * æ£æ°ä¸ºä¹å䏿®µæ¶é´ |
| | | * è´æ°ä¸ºä¹å䏿®µæ¶é´ |
| | | * @param:dateType æä½çæ¶é´æ¶åç§å¤©éæ© |
| | | * å¸¸ç¨æï¼ |
| | | * Calendar.MINUTE å |
| | | * Calendar.HOUR_OF_DAY æ¶ |
| | | * Calendar.DATE 天 |
| | | * Calendar.MONTH æ |
| | | */ |
| | | public static Date getAPeriodOfTime(Date date, int day, int dateType) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(dateType, day); |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | public static List<String> get3Hours() { |
| | | List<String> times = new ArrayList<>(); |
| | | SimpleDateFormat ymdh = new SimpleDateFormat(YYYYMMDDHH); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.add(Calendar.HOUR_OF_DAY, 1); |
| | | |
| | | for (int i = 0; i < 3; i++) { |
| | | calendar.add(Calendar.HOUR_OF_DAY, -1); |
| | | String time = ymdh.format(calendar.getTime()); |
| | | // times.add(time); |
| | | times.add(0, time); |
| | | } |
| | | |
| | | return times; |
| | | } |
| | | |
| | | public static Map<Date, Date> segmentationDateByTimeQuantum(Date startDate, Date endDate, int timeQuantum, int dateType) { |
| | | LinkedHashMap<Date, Date> result = new LinkedHashMap<Date, Date>(); |
| | | long startTimeMillisecond = startDate.getTime(); |
| | | long endTimeMillisecond = endDate.getTime(); |
| | | Long quantumTimeMillisecond = 0L; |
| | | switch (dateType) { |
| | | case Calendar.DATE: |
| | | quantumTimeMillisecond = new Integer(1000 * 60 * 60 * 24 * timeQuantum).longValue(); |
| | | break; |
| | | case Calendar.HOUR_OF_DAY: |
| | | quantumTimeMillisecond = new Integer(1000 * 60 * 60 * timeQuantum).longValue(); |
| | | break; |
| | | case Calendar.MINUTE: |
| | | quantumTimeMillisecond = new Integer(1000 * 60 * timeQuantum).longValue(); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | for (long time = startTimeMillisecond; time < endTimeMillisecond; time += quantumTimeMillisecond) { |
| | | Date beginDate = new Date(time); |
| | | Date finishDate = new Date(time + quantumTimeMillisecond); |
| | | if (finishDate.getTime() > endTimeMillisecond) { |
| | | finishDate = endDate; |
| | | } |
| | | result.put(beginDate, finishDate); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * åªé¤æ¥æçæ¶é´é¨å |
| | | */ |
| | | public static Date trimTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | |
| | | return dateTime(YYYY_MM_DD_HH_MM_SS, parseDateToStr(YYYY_MM_DD, cal.getTime()) + " 00:00:00"); |
| | | } |
| | | |
| | | /** |
| | | * å»å¹´ |
| | | */ |
| | | public static Date lastYear(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.add(Calendar.YEAR, -1); |
| | | |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * è·åä¸å¹´ä¸ç第å å¨ |
| | | */ |
| | | public static int getWeekOfYear(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | |
| | | return cal.get(Calendar.WEEK_OF_YEAR); |
| | | } |
| | | |
| | | /** |
| | | * è·åä¸å¹´ä¸ç第å å¨çææä¸ |
| | | */ |
| | | public static Date getWeekOfYearForMon(int year, int weekOfYear) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.set(Calendar.YEAR, year); |
| | | cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); |
| | | cal.set(Calendar.WEEK_OF_YEAR, weekOfYear); |
| | | |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * è·åä¸å¹´ä¸ç第å å¨çæææ¥ |
| | | */ |
| | | public static Date getWeekOfYearForSun(int year, int weekOfYear) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.set(Calendar.YEAR, year); |
| | | cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); |
| | | cal.set(Calendar.WEEK_OF_YEAR, weekOfYear); |
| | | |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¬æç¬¬ä¸å¤© |
| | | **/ |
| | | public static Date getMonthStart(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | // cal.set(Calendar.MONTH, 3) |
| | | cal.setTime(date); |
| | | cal.set(Calendar.DAY_OF_MONTH, 1); |
| | | return dateTime(YYYY_MM_DD_HH_MM_SS, parseDateToStr(YYYY_MM_DD, cal.getTime()) + " 00:00:00"); |
| | | } |
| | | |
| | | /** |
| | | * è·åæ¬ææåä¸å¤© |
| | | **/ |
| | | public static Date getMonthEnd(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | // cal.set(Calendar.MONTH, 3) |
| | | cal.setTime(date); |
| | | cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | return dateTime(YYYY_MM_DD_HH_MM_SS, parseDateToStr(YYYY_MM_DD, cal.getTime()) + " 23:59:59"); |
| | | } |
| | | } |