java操作日期工具类

public class DateUtil {

    /** DateFormat:yyyyMMddHHmmss */
    public static final String FORMATE_YYYYMMDDHHMMSSZMINUS = "yyyyMMddHHmmssSSS";

    /** DateFormat:yyyy-MM */
    public static final String FORMATE_YYYY_MM_MINUS = "yyyy-MM";
    /** DateFormat:yyyy-MM-dd */
    public static final String FORMATE_YYYY_MM_DD_MINUS = "yyyy-MM-dd";

    /** DateFormat:yyyy-MM-dd HH:mm:ss*/
    public static final String FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS = "yyyy-MM-dd HH:mm:ss";

    /** DateFormat:yyyyMMdd */
    public static final String FORMATE_YYYY_MM_DD = "yyyyMMdd";

    /**DateFormat:yyyy年MM月dd日 */
    public static final String CHN_FORMATE_YYYY_MM_DD = "yyyy年MM月dd日";

    /**DateFormat:yyyy/MM/dd HH:mm:ss*/
    public static final String CHN_FORMATE_YYYY_MM_DD_HH_MM_SS = "yyyy/MM/dd HH:mm:ss";

    /**TimeEnd*/
    public static final String TimeEnd = " 23:59:59";
    /**TimeBegin*/
    public static final String TimeBegin = " 00:00:00";

    /**
     * 获取当前日期。
     * @return String 系统当前日期
     */
    public static Date getCurrentDateAsDate() {
        Date date = new Date();
        return date;
    }

    /**
     * 将字符串装换成日期类型
     * @param str 需要转换的字符串
     * @return Date 转换后的日期
     */
    public static Date convertToDate(String format, String str) {

        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {

            return sdf.parse(str);
        } catch (ParseException pse) {

            return null;
        }
    }

    /**将日期转化成字符串
     * @param date
     * @param format(字符串的类型)
     * @return
     */
    public static String convertDateToStr(Date date, String format){

        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     * 得到系统当前时间戳。(精确到毫秒)
     * @return String 系统当前时间戳X
     */
    public static String getCurrentTimeStamp() {

        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYYMMDDHHMMSSZMINUS);
        Date date = new Date();
        System.out.println(date.toString());
        return sdf.format(date);
    }

    /**
     * 获取当前日期。
     * @return String 系统当前日期:DateFormat:yyyyMMdd
     */
    public static String getCurrentDateYMD() {

        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD);
        Date date = new Date();
        return sdf.format(date);
    }



    /**
     * 获取系统当前日期(YYYY年MM月DD日)
     * @return
     */
    public static String getCurrentDateYMDChn() {
        SimpleDateFormat sdf = new SimpleDateFormat(CHN_FORMATE_YYYY_MM_DD);

        Date date = new Date();
        return sdf.format(date);
    }

    /**
     * 获取系统当前日时(YYYY年MM月DD日 HH:MMrSS)
     * @return
     */
    public static String getCurrentDateYMDHMSChn() {
        SimpleDateFormat sdf = new SimpleDateFormat(CHN_FORMATE_YYYY_MM_DD_HH_MM_SS);

        Date date = new Date();
        return sdf.format(date);
    }

    /**
     * 增加分钟,计算时间
     * @param date
     * @param minute
     * @return
     */
    public static Date addTimeByMinute(Date date, int minute){
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minute);
        return calendar.getTime();
    }

    /**
     * 增加分钟,计算时间
     * @param date
     * @param minute
     * @param calendarField
     * @return
     */
    public static Date calcTime(Date date, int addAmount, int calendarField){
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(calendarField, addAmount);
        return calendar.getTime();
    }

    /**
     * 获取当前系统时间和星期几
     * @return YYYY年MM月DD日 星期几
     */
    public static String getCurrentDateAndWeekDay() {

        String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int day = cal.get(Calendar.DAY_OF_WEEK);
        String week_day = dayNames[day - 1];

        return getCurrentDateYMDChn() + " "+ week_day;
    }

    /**
     * 获取当前系统时间和星期几
     * @return YYYY年MM月DD日 星期几
     */
    public static String getCurrentDateAndWeek() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int day = cal.get(Calendar.DAY_OF_WEEK)-1;
        if (day==0){
            day = 7;
        }       
        return String.valueOf(day);
    }


    /**
     * 获取当前时间(yyyy-MM-dd HH:mm:ss 格式)
     * @return
     */
    public static Date getCurrentDateTime() {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS);
        try {
            return sdf.parse(sdf.format(new Date()));
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        } 
    }

    /**
     * 获取当前时间(yyyy-MM-dd HH:mm:ss 格式)
     * @return String
     */
    public static String getCurrentDateTimeStr() {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS);
        return sdf.format(new Date());
    }

    /**比较当前时间是否在start-end时间内
     * @param start
     * @param end
     * @return
     */
    public static boolean compareCurrentTime(String start,String end){
        Date now = getCurrentDateTime();
        String day =  convertDateToStr(now,FORMATE_YYYY_MM_DD_MINUS);
        Date startTime =  convertToDate(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS,day+" "+ start);
        Date endTime =  convertToDate(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS,day+" "+ end);
        return startTime.before(now)&&now.before(endTime);
    }

    public static boolean compareSpecifiedTime(Date specified, Date start,Date end){
        return start.before(specified)&&specified.before(end);
    }

    /**
     * 计算日期(dt1)是否在日期(dt2)- 期间(period)的之后
     * @param dt1 日期1
     * @param dt2 日期2
     * @param period 时间间隔
     * @return dt1 ≥ dt2 - period:返回true,否则返回false
     */
    public static boolean compareTimeInDay(Date dt1, Date dt2, int period, boolean ... notCotainsTargetDayFlg) {

        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);

        try {
            Date tmpDate1 = sdf.parse(sdf.format(dt1));
            Calendar c = Calendar.getInstance();
            c.setTime(dt2);
            c.add(Calendar.HOUR, period * 24);
            Date tmpDate2 = sdf.parse(sdf.format(c.getTime()));
            if (notCotainsTargetDayFlg != null &&notCotainsTargetDayFlg.length > 0 && notCotainsTargetDayFlg[0]) {
                if (tmpDate1.compareTo(tmpDate2) > 0) {
                    return true;
                } else {
                    return false;
                }
            } else {
                if (tmpDate1.compareTo(tmpDate2) >= 0) {
                    return true;
                } else {
                    return false;
                }
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }


        return false;
    }

    public static long calcDaysPeriod(Date dt1, Date dt2) {

        try {
            SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);
            Date dt01 = sdf.parse(sdf.format(dt1));
            Date dt02 = sdf.parse(sdf.format(dt2));

            return (dt02.getTime() - dt01.getTime())/(3600*24*1000);
        } catch (Exception e) {

        }

        return 0;
    }

    public static Date getCurrentDaysDateTime(Date dt){
        if (dt==null)
            return null;
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS);
        String currentTimeStr = convertDateToStr(dt,FORMATE_YYYY_MM_DD_MINUS);
        try {
            dt = sdf.parse(currentTimeStr+TimeEnd);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
        return dt;
    }

    /**
     * 返回指定Date值的时间值,格式:yyyy-MM-dd HH:mm:ss
     * @param date
     *            需要转换的日期
     * @return String值
     */
    public static String dateToAllCode(Date date) {
        try {
            SimpleDateFormat simpledateformat = new SimpleDateFormat(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS);
            String s = simpledateformat.format(date);
            return s;
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 获取上一个月的日期格式 2017-06
     * @return
     */
    public static String getLastMounth(){
        Calendar c = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_MINUS);
        c.setTime(new Date());
        c.add(Calendar.MONTH, -1);
        Date m = c.getTime();
        return format.format(m);
    }

    /**
     * 获取过去第几天的日期
     * 
     * @param past
     * @return
     */  
   public static String getPastDate(int past) {  
       Calendar calendar = Calendar.getInstance();  
       calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);  
       Date today = calendar.getTime();  
       SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);  
       String result = format.format(today);  
       return result;  
   }  
    /**
     * 获取过去第几天的日期
     * 
     * @param past
     * @return
     */  
  public static Date getPastDatez(int past) {  
      Calendar calendar = Calendar.getInstance();  
      calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);  
      Date today = calendar.getTime();  
     /* SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);  
      String result = format.format(today);  */
      return today;  
  }
  public static Date getPastMonthz(int past) {  
      Calendar calendar = Calendar.getInstance();  
      calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - past);  
      Date today = calendar.getTime();  
      /* SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);  
      String result = format.format(today);  */
      return today;  
  }
/*  public static Date getPastYearz(int past) {  
      Calendar calendar = Calendar.getInstance();  
      calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_MONTH) - past);  
      Date today = calendar.getTime();  
       SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);  
      String result = format.format(today);  
      return today;  
  }*/
   /**
    * 获取当期日期 YYYY-MM-DD
    * @param date
    * @return
    */
    public static String getCurrentString(Date date){
        SimpleDateFormat format = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);
        return format.format(date);
    }

    //获取最近30天日期
    public static  List<String> getRecentlyDate(int days) {
        // 'yyyy-MM-dd' 
        List<String> dates = new ArrayList<String>();
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);
        Date date = null;
        for (int i = 0; i < days; i++) {
            date = getDate(i);;
            dates.add(sdf.format(date));
        }
        return dates;

    }
    //计算日期
    public static Date getDate(int i){
        Calendar cal=Calendar.getInstance();
        cal.add(Calendar.DATE,-i);

        return cal.getTime();
    }
    /**
     * 获取今天的i天前的日期
     * @param i
     * @return
     */
    public static String getstrBeforeOrAfterTime(int i){
        Calendar cal=Calendar.getInstance();
        cal.add(Calendar.DATE,-i);
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);
        String strDateTime = sdf.format(cal.getTime());
        return strDateTime;
    }
    public static String getstrBeforeOrAfterMonth(int i) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -i);
        SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_MINUS);
        String strDateTime = sdf.format(cal.getTime());
        return strDateTime; 
    }
    public static void main(String[] args) throws ParseException{

        System.out.println(getCurrentTimeStamp());
//      System.out.println(getCurrentDateAndWeek());
//      System.out.println(compareCurrentTime("12:23:20","15:23:14"));

//      SimpleDateFormat sdf = new SimpleDateFormat(FORMATE_YYYY_MM_DD_HH_MM_SS_MINUS);
//      String currentTimeStr = convertDateToStr(new Date(),FORMATE_YYYY_MM_DD_MINUS);
//      Date dt1 = sdf.parse(currentTimeStr+" 23:59:59");   
//      System.out.println(currentTimeStr);
//      System.out.println(dt1);
//      Date dt1 = sdf.parse("2012-01-10 00:00:00");
//      Date dt2 = sdf.parse("2012-01-11 00:00:00");

//      System.out.println(compareTimeInDay(dt1, dt2, 0));
//      System.out.println(calcDaysPeriod(dt1, dt2));
//      System.out.println(getCurrentDateAndWeek());
        System.out.println(getPastDate(7));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值