14个常用的日期方法
前言
最近总和日期打交道,每次去写太麻烦,这里整理了14个日期常用的方法,可直接使用。
常量
//======================日期格式化常量=====================// public static final String YYYY_MM_DDHHMMSS = "yyyy-MM-dd HH:mm:ss"; public static final String YYYY_MM_DD = "yyyy-MM-dd"; public static final String YYYY_MM = "yyyy-MM"; public static final String YYYY = "yyyy"; public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public static final String YYYYMMDD = "yyyyMMdd"; public static final String YYYYMM = "yyyyMM"; public static final String YYYYMMDDHHMMSS_1 = "yyyy/MM/dd HH:mm:ss"; public static final String YYYY_MM_DD_1 = "yyyy/MM/dd"; public static final String YYYY_MM_1 = "yyyy/MM";
1.获取当前时间
/** * * 获取当前时间 * @return * @see [类、类#方法、类#成员] */ public static Date getCurrentDate() { return new Date(); }
2.获取当前系统时间字符串
/** * * 获取当前系统时间字符串 * @return * @see [类、类#方法、类#成员] */ public static String getCurrDateToStr() { return dateToStr(getCurrentDate(),YYYY_MM_DDHHMMSS); }
3.以毫秒为单位返回当前时间
/** * * 以毫秒为单位返回当前时间 * @return * @see [类、类#方法、类#成员] */ public static long getCurrentTimeMillis() { return System.currentTimeMillis(); }
4.自定义取值,Date类型转为String类型
/** * * 自定义取值,Date类型转为String类型 * @param date 日期 * @param pattern 格式化常量 * @return * @see [类、类#方法、类#成员] */ public static String dateToStr(Date date, String pattern) { SimpleDateFormat format = null; if (null == date) return null; format = new SimpleDateFormat(pattern, Locale.getDefault()); return format.format(date); }
5.自定义取值,String转换为Date
/** * * 自定义取值,String转换为Date * @param str 日期字符串 * @param pattern 格式化常量 * @return * @see [类、类#方法、类#成员] */ public static Date strToDate(String str, String pattern) { if (null==str||"".equals(str.trim())) return null; SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.getDefault()); try { return format.parse(str); } catch (ParseException e) { return null; } }
6.在指定的日期上增加天数
/** * * 在指定的日期上增加天数 * @param date 日期 * @param day 天数 * @return * @see [类、类#方法、类#成员] */ public static Date addDay(Date date, int day) { if (null == date) return null; Calendar calendar = Calendar.getInstance(Locale.getDefault()); calendar.setTime(date); calendar.add(Calendar.DATE, day); return calendar.getTime(); }
7.在指定的日期上减去天数
/** * 在指定的日期上减去天数 * * @param date 日期 * @param day 天数 * @return */ public static Date subDay(Date date, int day) { if (null == date) return null; Calendar calendar = Calendar.getInstance(Locale.getDefault()); calendar.setTime(date); calendar.add(Calendar.DATE, -day); return calendar.getTime(); }
8.为时间增加分钟
/** * * 为时间增加分钟 * @param date 日期 * @param minute 分钟 * @return * @see [类、类#方法、类#成员] */ public static String addMinute(Date date, int minute) { if (null == date) return null; Calendar calendar = Calendar.getInstance(Locale.getDefault()); calendar.setTime(date); calendar.add(Calendar.MINUTE, minute); return dateToStr(calendar.getTime(),YYYY_MM_DDHHMMSS); }
9.为时间减去分钟
/** * * 为时间减去分钟 * @param date 日期 * @param minute 分钟 * @return * @see [类、类#方法、类#成员] */ public static String subMinute(Date date, int minute) { if (null == date) return null; Calendar calendar = Calendar.getInstance(Locale.getDefault()); calendar.setTime(date); calendar.add(Calendar.MINUTE, -minute); return dateToStr(calendar.getTime(),YYYY_MM_DDHHMMSS); }
10.两个日期大小比较
/** * 两个日期大小比较 * * @param date1 * @param date2 * @return 后面的日期大的话,返回true ,第一个日期大返回false * @see [类、类#方法、类#成员] */ public static boolean dateLastLarge(String date1, String date2) { Date d1 = strToDate(date1,YYYY_MM_DDHHMMSS); Date d2 = strToDate(date2,YYYY_MM_DDHHMMSS); return d1.before(d2); }
11.判断时间是否超过一定的小时数
/** * * 判断时间是否超过一定的小时数 * @param date1 较大的时间 * @param date2 较小的时间 * @return 超过返回true,不超过返回false * @throws Exception * @see [类、类#方法、类#成员] */ public static boolean judgmentDate(String date1, String date2,float h) throws Exception { String time1 = date1.substring(0, date1.lastIndexOf(" ")); String time2 = date1.substring(0, date1.lastIndexOf(" ")); SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DDHHMMSS); Date start = sdf.parse(date1); Date end = sdf.parse(date2); long cha = end.getTime() - start.getTime(); if (cha < 0) { if(time1.equals(time2)){ return true; }else{ return false; } } double result = cha * 1.0 / (1000 * 60 * 60); if (result >= h) { return true; } else { return false; } }
12.获取当前日期往后一定的年数
/** * * 获取当前日期往后一定的年数 * @param year 年数 * @return * @see [类、类#方法、类#成员] */ public static String getCurrLastYear(int year) { SimpleDateFormat format = new SimpleDateFormat(YYYYMMDD); Date date = new Date(); Calendar calendar = Calendar.getInstance(Locale.getDefault()); calendar.setTime(date); calendar.add(Calendar.YEAR, year); return format.format(calendar.getTime()); }
13计算两个日期之间相差的天数
/** * * 计算两个日期之间相差的天数 * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差天数 * @throws ParseException * @see [类、类#方法、类#成员] */ public static int daysBetween(Date smdate,Date bdate) throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); smdate=sdf.parse(sdf.format(smdate)); bdate=sdf.parse(sdf.format(bdate)); Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); }
14.字符串的日期格式的计算
/** * * 字符串的日期格式的计算 * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差天数 * @throws ParseException * @see [类、类#方法、类#成员] */ public static int daysBetween(String smdate,String bdate) throws ParseException{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(smdate)); long time1 = cal.getTimeInMillis(); cal.setTime(sdf.parse(bdate)); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); return Integer.parseInt(String.valueOf(between_days)); }
资源下载