| | |
| | | import java.lang.management.ManagementFactory; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | import com.yssh.config.InitConfig; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | |
| | | /** |
| | | * 时间工具类 |
| | | * |
| | | * @author tam |
| | | */ |
| | | public class DateUtils extends org.apache.commons.lang3.time.DateUtils { |
| | | public static String YYYY = "yyyy"; |
| | | |
| | |
| | | |
| | | 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", |
| | | |
| | | 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" }; |
| | | "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
| | | |
| | | /** |
| | | * 获取当前Date型日期 |
| | | * |
| | | * @return Date() 当前日期 |
| | | */ |
| | | public static Date getNowDate() { |
| | | return new Date(); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前日期, 默认格式为yyyy-MM-dd |
| | | * |
| | | * @return String |
| | | */ |
| | | public static String getDate() { |
| | | return dateTimeNow(YYYY_MM_DD); |
| | | } |
| | |
| | | } |
| | | |
| | | public static final String dateTimeNow(final String format) { |
| | | return parseDateToStr(format, new Date()); |
| | | return parseDateToStr(format, InitConfig.getDate()); |
| | | } |
| | | |
| | | public static final String dateTime(final Date date) { |
| | |
| | | } |
| | | } |
| | | |
| | | 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"); |
| | | return DateFormatUtils.format(InitConfig.getDate(), "yyyy/MM/dd"); |
| | | } |
| | | |
| | | /** |
| | | * 日期路径 即年/月/日 如20180808 |
| | | */ |
| | | public static final String dateTime() { |
| | | Date now = new Date(); |
| | | return DateFormatUtils.format(now, "yyyyMMdd"); |
| | | return DateFormatUtils.format(InitConfig.getDate(), "yyyyMMdd"); |
| | | } |
| | | |
| | | /** |
| | |
| | | // long sec = diff % nd % nh % nm / ns; |
| | | return day + "天" + hour + "小时" + min + "分钟"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @Title: differHour |
| | | * @throws |
| | | * @Title: differHour |
| | | * @Description: 获取两个时间差几个小时 |
| | | * @param: @param endDate |
| | | * @param: @param nowDate |
| | | * @param: @return |
| | | * @return: long |
| | | * @throws |
| | | * @param: @return |
| | | * @return: long |
| | | */ |
| | | public static int differDay(Date startDate, Date endDate){ |
| | | 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:day 操作的时间间隔 |
| | | * 正数为之后一段时间 |
| | | * 负数为之前一段时间 |
| | | * @param:dateType 操作的时间时分秒天选择 |
| | | * 常用有: |
| | | * Calendar.MINUTE 分 |
| | | * Calendar.HOUR_OF_DAY 时 |
| | | * Calendar.DATE 天 |
| | | * Calendar.MONTH 月 |
| | | * Calendar.MINUTE 分 |
| | | * Calendar.HOUR_OF_DAY 时 |
| | | * Calendar.DATE 天 |
| | | * Calendar.MONTH 月 |
| | | */ |
| | | public static Date getAPeriodOfTime(Date date, int day,int dateType) { |
| | | 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 Map<Date, Date> segmentationDateByTimeQuantum(Date startDate, Date endDate, int timeQuantum,int dateType){ |
| | | |
| | | 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 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; |
| | | 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); |
| | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 获取本月第一天 |
| | | * @return String |
| | | **/ |
| | | public static Date getMonthStart() { |
| | | Calendar cal = Calendar.getInstance(); |
| | | //cal.set(Calendar.MONTH, 3); |
| | | cal.set(Calendar.DAY_OF_MONTH, 1); |
| | | return dateTime(YYYY_MM_DD_HH_MM_SS, parseDateToStr(YYYY_MM_DD, cal.getTime()) + " 00:00:00"); |
| | | } |
| | | |
| | | /** |
| | | * 获取本月最后一天 |
| | | * @return String |
| | | **/ |
| | | public static Date getMonthEnd() { |
| | | Calendar cal = Calendar.getInstance(); |
| | | //cal.set(Calendar.MONTH, 3); |
| | | 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"); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | //System.out.println(parseDateToStr(YYYY_MM_DD_HH_MM_SS, getMonthStart())); |
| | | //System.err.println(parseDateToStr(YYYY_MM_DD_HH_MM_SS, getMonthEnd())); |
| | | System.out.println(parseDateToStr(YYYY_MM_DD_HH_MM_SS, getAPeriodOfTime(getNowDate(), -7, Calendar.DATE))); |
| | | /** |
| | | * 剪除日期的时间部分 |
| | | */ |
| | | 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"); |
| | | } |
| | | } |