时间格式常用类
来源:互联网 发布:淘宝直通车步骤 编辑:程序博客网 时间:2024/06/01 09:08
package com.fh.util;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtil {private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");private final static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");private final static SimpleDateFormat sdfDays = new SimpleDateFormat("yyyyMMdd");private final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");/** * 获取YYYY格式 * * @return */public static String getYear() {return sdfYear.format(new Date());}/** * 获取YYYY-MM-DD格式 * * @return */public static String getDay() {return sdfDay.format(new Date());}/** * 获取YYYYMMDD格式 * * @return */public static String getDays(){return sdfDays.format(new Date());}/** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */public static String getTime() {return sdfTime.format(new Date());}/*** @Title: compareDate* @Description: TODO(日期比较,如果s>=e 返回true 否则返回false)* @param s* @param e* @return boolean * @throws* @author luguosui */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 {return fmt.parse(date);} catch (ParseException e) {e.printStackTrace();return null;}}/** * 校验日期是否合法 * * @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;}}public static int getDiffYear(String startTime,String endTime) {DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");try {long aa=0;int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365);return years;} catch (Exception e) {// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对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();} day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); //System.out.println("相隔的天数="+day); return day; } /** * 得到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"); String dateStr = sdfd.format(date); return dateStr; } /** * 得到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"); String dateStr = sdf.format(date); return dateStr; } /** * 某年某月多少天,几周 */ @SuppressWarnings("static-access")public static void getD(){ Calendar calendar = Calendar.getInstance(); calendar.set(calendar.YEAR, 2017); calendar.set(calendar.MONTH, 1); //2月 System.out.print("本月天数:"+calendar.getActualMaximum(calendar.DAY_OF_MONTH)); System.out.print("本月周数:"+calendar.getActualMaximum(calendar.WEEK_OF_MONTH)); } public static void main(String[] args) { System.out.println(getDays()); System.out.println(getAfterDayWeek("3")); }/** * 得到n天之后的日期 * @param days * @return */ public static String getAfterDayDate(Date date,String days) { Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.setTime(date); int daysInt = Integer.parseInt(days); canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date2 = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdfd.format(date2); return dateStr; } /** * 所在周星期一的日期 * @param date * @return */ public static String getTimeInterval(Date date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { calendar.add(Calendar.DAY_OF_MONTH, -1); } // System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期 // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 calendar.setFirstDayOfWeek(Calendar.MONDAY); // 获得当前日期是一个星期的第几天 int day = calendar.get(Calendar.DAY_OF_WEEK); calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - day); String imptimeBegin = sdf.format(calendar.getTime()); // System.out.println("所在周星期一的日期:" + imptimeBegin); return imptimeBegin; } /** * 所在周第几天 * @param date * @return * @return */ public static int getInterval(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { calendar.add(Calendar.DAY_OF_MONTH, -1); } // System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期 // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 calendar.setFirstDayOfWeek(Calendar.MONDAY); // 获得当前日期是一个星期的第几天 int day = calendar.get(Calendar.DAY_OF_WEEK)-1; return day; } /** * 获得上周周一 日期 * @return * @author */ public static String getLastTimeInterval(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; int offset = 1 - dayOfWeek; calendar.add(Calendar.DATE, offset - 7); String lastEndDate = sdf.format(calendar.getTime()); return lastEndDate; }
}
0 0