Java日期格式以及生成相應日期-封裝呼叫
阿新 • • 發佈:2018-12-10
package com.yihuisoft.common.util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 日期工具類 * @author zarkjobs * @version v1.0.0 */ public class DateUtil { /**yyyy格式*/ public static final String sdfyyyy = "yyyy"; /**yyyy-MM-dd格式*/ public static final String sdfyyyy_MM_dd = "yyyy-MM-dd"; /**yyyy年MM月dd日格式*/ public static final String sdfyyyyCMMCddC = "yyyy年MM月dd日"; /**yyyyMMdd格式*/ public static final String sdfyyyyMMdd = "yyyyMMdd"; /**yyyy-MM-dd HH:mm:ss格式*/ public static final String sdfyyyy_MM_ddHHmmss = "yyyy-MM-dd HH:mm:ss"; /**yyyy-MM-dd HH:mm格式*/ public static final String sdfyyyy_MM_ddHHmm = "yyyy-MM-dd HH:mm"; /**yyyy年MM月dd日 HH:mm:ss格式*/ public static final String sdfyyyyCMMCddCHHmmss = "yyyy年MM月dd日 HH:mm:ss"; /**HH:mm:ss格式*/ public static final String sdfHHmmss = "HH:mm:ss"; /**yyyyMMddHHmmss格式*/ public static final String sdfyyyyMMddHHmmss = "yyyyMMddHHmmss"; /**yyyyMM格式*/ public static final String sdfyyyyMM = "yyyyMM"; /**yyyy-MM格式*/ public static final String sdfyyyy_MM = "yyyy-MM"; /**MMdd格式*/ public static final String sdfMMdd = "MMdd"; /**HHmm格式*/ public static final String sdfHHmm = "HHmm"; /** * 獲取yyyyMMddHHmmss格式 * @return */ public static String getSdfTimes() { return new SimpleDateFormat(sdfyyyyMMddHHmmss).format(new Date()); } /** * 獲取YYYYMM格式 * @return */ public static String getMonth() { return new SimpleDateFormat(sdfyyyy_MM).format(new Date()); } /** * 獲取上一個月 * * @return */ public static String getLastMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, -1); SimpleDateFormat dft = new SimpleDateFormat("yyyyMM"); return dft.format(cal.getTime()); } /** * * 描述:獲取下一個月. * * @return */ public static String getPreMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); SimpleDateFormat dft = new SimpleDateFormat("yyyyMM"); return dft.format(cal.getTime()); } /** * 獲取YYYY格式 * @return */ public static String getYear() { return new SimpleDateFormat(sdfyyyy).format(new Date()); } /** * 獲取YYYY-MM-DD格式 * @return */ public static String getDay() { return new SimpleDateFormat(sdfyyyy_MM_dd).format(new Date()); } /** * 獲取YYYYMMDD格式 * @return */ public static String getDays(){ return new SimpleDateFormat(sdfyyyyMMddHHmmss).format(new Date()); } /** * 獲取YYYY-MM-DD HH:mm:ss格式 * @return */ public static String getTime() { return new SimpleDateFormat(sdfyyyy_MM_ddHHmmss).format(new Date()); } /** * @Title: compareDate * @Description: TODO(日期比較,如果s>=e 返回true 否則返回false) * @param s * @param e * @return boolean * @throws * @author fh */ public static boolean compareDate(String s, String e) { if(fomatDate(s)==null||fomatDate(e)==null){ return false; } return fomatDate(s).getTime() >=fomatDate(e).getTime(); } /** * 格式化日期 * @return */ public static Date fomatDate(String date) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { if(date==null || "".equals(date) || "null".equals(date)) return null; return fmt.parse(date); } catch (ParseException e) { //e.printStackTrace(); System.out.println(e); return null; } } /** * 格式化日期 * @return */ public static Date fomatDate(String date,String sdfmt) { try { if(date==null || "".equals(date) || "null".equals(date)) return null; return new SimpleDateFormat(sdfmt).parse(date); } catch (ParseException e) { //e.printStackTrace(); System.out.println(e); return null; } } /** * 格式化日期 * @return */ public static String fomatDate(Date date,String sdfmt) { try { if(date==null ) return null; return new SimpleDateFormat(sdfmt).format(date); } catch (Exception e) { //e.printStackTrace(); System.out.println(e); return null; } } /** * 格式化日期 * @return */ public static Date fomatDateToDate(Date date,String sdfmt) { return fomatDate(fomatDate(date,sdfmt),sdfmt); } /** * 校驗日期是否合法 * @return */ public static boolean isValidDate(String s) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { fmt.parse(s); return true; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就說明格式不對 return false; } } /** * @param startTime * @param endTime * @return */ public static int getDiffYear(String startTime,String endTime) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { return (int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365); } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就說明格式不對 System.out.println(e); return 0; } } /** * <li>功能描述:時間相減得到天數 * @param beginDateStr * @param endDateStr * @return * long * @author Administrator */ public static long getDaySub(String beginDateStr,String endDateStr){ long day=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date beginDate = null; java.util.Date endDate = null; try { beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); } catch (ParseException e) { //e.printStackTrace(); System.out.println(e); } if(beginDate != null && endDate != null) day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); //System.out.println("相隔的天數="+day); return day; } /** * <li>功能描述:時間相減得到秒 * @param beginDateStr * @param endDateStr * @return * long * @author Administrator */ public static long getDaySubTime(String beginDateStr,String endDateStr){ long second=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date beginDate = null; java.util.Date endDate = null; try { beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); } catch (ParseException e) { //e.printStackTrace(); System.out.println(e); } if(beginDate != null && endDate != null) second=(endDate.getTime()-beginDate.getTime())/(1000); return second; } /** * 得到n天之後的日期 * @param days * @return */ public static String getAfterDayDate(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期減 如果不夠減會將月變動 Date date = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdfd.format(date); } /** * 得到n天之後的日期 * @param days * @return */ public static String getAfterDayDate(int days) { int daysInt = days; Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期減 如果不夠減會將月變動 Date date = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdfd.format(date); } /** * 得到n天之後的日期 * @param days * @return */ public static Date getAfterDay(int days) { Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, days); // 日期減 如果不夠減會將月變動 return canlendar.getTime(); } /** * 得到n天之後的日期 * @param days * @return */ public static Date getAfterDay(int days,String sdfmt) { return fomatDate(fomatDate(getAfterDay(days),sdfmt),sdfmt); } /** * 獲取當前月的天數 * @return */ public static int getDayOfMonth(){ Calendar calendar = Calendar.getInstance(); return calendar.getActualMaximum(Calendar.DATE); } /** * 根據指定時間得到n小時之後的時間 * @param date * @param n * @return */ public static Date getAfterHour(Date date, int n) { Calendar canlendar = Calendar.getInstance(); canlendar.setTime(date); canlendar.add(Calendar.HOUR, n); return canlendar.getTime(); } /** * 得到n天之後是周幾 * @param days * @return */ public static String getAfterDayWeek(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期減 如果不夠減會將月變動 Date date = canlendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("E"); return sdf.format(date); } /** * 返回第一個引數加上第二個引數(天)之後的日期 * @param date * @param day * @return */ public static Date getDateNext(Date date, int day) { Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, day); return calendar.getTime(); } /** * 根據日期字串,傳入幾天,得到向後幾天日期 * @param date 日期 * @param day 幾天 * @return */ public static Date getDateNext(String date, int day){ Calendar calendar = new GregorianCalendar(); calendar.setTime(fomatDate(date)); calendar.add(Calendar.DAY_OF_MONTH, day); return calendar.getTime(); } /** * 取得上月日期 * @param monthNum 月數 * @return */ public static String getLastMonth(int monthNum) { Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, -1*monthNum); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMM"); return dateFormat.format(c.getTime()); } /** * 下月第一天 * @return */ public static Date nextMonthFirstDate() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.MONTH, 1); return calendar.getTime(); } /** * 上月第一天 * @return */ public static Date lastMonthFirstDate() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.MONTH, -1); return calendar.getTime(); } /** * 將日期中的時分秒清零 * @param date * @return */ public static Date getDayStart(Date date) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date); cal1.set(Calendar.HOUR_OF_DAY, 0); cal1.set(Calendar.MINUTE, 0); cal1.set(Calendar.SECOND, 0); cal1.set(Calendar.MILLISECOND, 0); return cal1.getTime(); } /** * 1970/01/01至今的秒數轉換成Date * @param timeStamp * @return */ public static Date getDateByTimeStamp(Long timeStamp){ return new Date(timeStamp*1000); } /** * 1970/01/01至今的豪秒數轉換成Date * @param timeStampMs * @return */ public static Date getDateByTimeStampMs(Long timeStampMs){ return new Date(timeStampMs); } /** * 時間轉換成秒 1970/01/01至今的秒數(Date轉long),等於new Date().getTime()/1000 * @param date * @return * @throws Exception */ public static long getTimeStampByDate(Date date) { long stamp = 0L; Date date1 = date; Date date2 = null; try { date2 = (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).parse("1970/01/01 08:00:00"); stamp = (date1.getTime() - date2.getTime()) / 1000L; } catch (Exception e) { stamp = 0L; } return stamp; } /** * 時間轉換成秒 1970/01/01至今的豪秒數(Date轉long) * @param date * @return * @throws Exception */ public static long getTimeStampMsByDate(Date date) { long stamp = 0L; Date date1 = date; Date date2 = null; try { date2 = (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).parse("1970/01/01 08:00:00"); stamp = (date1.getTime() - date2.getTime()); } catch (Exception e) { stamp = 0L; } return stamp; } /** * 獲取當前時間之前或之後幾小時 hour * @param hour * @return */ public static Date getTimeByHour(int hour) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + hour); //return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); return calendar.getTime(); } /** * main函式 * @param args */ public static void main(String[] args) { // Date date = new Date(); // System.out.println(date); // Date date2 = getAfterHour(date, 10); // System.out.println(date2); // System.out.println(getDays()); System.out.println(getTimeStampByDate(new Date())+"========="+getTimeStampByDate(DateUtil.getAfterDay(7))); } }