关于-JAVA获取当前时间Util:N天前、N月前、N年前、N天后、N天之后是周几等。

package com.util;


import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


/** 
 * 说明:日期处理
 */
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");
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");


/**
* 获取YYYY格式
*/
public static String getSdfTimes() {
return sdfTimes.format(new Date());
}

/**
* 获取YYYY格式
*/
public static String getYear() {
return sdfYear.format(new Date());
}


/**
* 获取YYYY-MM-DD格式
*/
public static String getDay() {
return sdfDay.format(new Date());
}

/**
* 获取YYYYMMDD格式
*/
public static String getDays(){
return sdfDays.format(new Date());
}


/**
* 获取YYYY-MM-DD HH:mm:ss格式
*/
public static String getTime() {
return sdfTime.format(new Date());
}


/**
* @Title: compareDate
* @Description: TODO(日期比较,如果s>=e 返回true 否则返回false)
* @param s
* @param e
* @return boolean  
*/
public static boolean compareDate(String s, String e) {
if(fomatDate(s)==null||fomatDate(e)==null){
return false;
}
return fomatDate(s).getTime() >=fomatDate(e).getTime();
}


/**
* 格式化日期
*/
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;
}
}


/**
* 校验日期是否合法
*/
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 {
//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;
}
}
 
/**
     *
  • 功能描述:时间相减得到天数
         * @param beginDateStr
         * @param endDateStr
         * @return
         */
        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;
        }
        
        public static void main(String[] args) {
        System.out.println(getDays());
        System.out.println(getAfterDayWeek("3"));
        }
        /** 
         * @param 要转换的毫秒数 
         * @return 该毫秒数转换为 * days * hours * minutes * seconds 后的格式 
         */  
        public static String formatDuring(long mss) {  
            long days = mss / (1000 * 60 * 60 * 24);  
            long hours = (mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);  
            long minutes = (mss % (1000 * 60 * 60)) / (1000 * 60);  
            long seconds = (mss % (1000 * 60)) / 1000;  
            return days + " 天  " + hours + " 小时  " + minutes +" 分 "  
                    + seconds + " 秒  ";  
        } 
        /**
         * 根据开始时间和结束时间返回时间段内的时间集合
         * @param beginDate
         * @param endDate
         * @return List
         */
        @SuppressWarnings("unchecked")
        public static List getDatesBetweenTwoDate(String begin, String end,String formatStr) throws ParseException { 
        SimpleDateFormat sdf = new SimpleDateFormat(formatStr); 
    Date beginDate=sdf.parse(begin);      
    Date endDate=sdf.parse(end);      
            List lDate = new ArrayList();
            lDate.add(begin);//把开始时间加入集合
            Calendar cal = Calendar.getInstance();
            //使用给定的 Date 设置此 Calendar 的时间
            cal.setTime(beginDate);
            boolean bContinue = true;
            while (bContinue) {
                //根据日历的规则,为给定的日历字段添加或减去指定的时间量
                cal.add(Calendar.DAY_OF_MONTH, 1);
                // 测试此日期是否在指定日期之后
                if (endDate.after(cal.getTime())) {
                    lDate.add(sdf.format(cal.getTime()));
                } else {
                    break;
                }
            }
            lDate.add(end);//把结束时间加入集合
            
            return removeDuplicateWithOrder(lDate);
        }
        /**
         * 去重复
         * @param list
         * @return
         */
        public static List removeDuplicateWithOrder(List list)   { 
            Set set  =   new  HashSet(); 
            List newList  =   new  ArrayList(); 
         for  (Iterator iter  =  list.iterator(); iter.hasNext();)   { 
               Object element  =  iter.next(); 
               if  (set.add(element)) 
                  newList.add(element); 
           } 
           list.clear(); 
           list.addAll(newList); 
           return list;
      } 
        /**
         * [描述/说明] 根据时间返回当前月的所有天数日期  每个日期是第几天 星期几
         * @time 2017-09-09
         * @param time 时间
         * @param formatStr时间格式
         * @param returnFormatStr返回时间格式
         * @return
         */
    public static Map getAllTheDateOftheMonth(String time,String formatStr,String returnFormatStr) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat(formatStr); 
    SimpleDateFormat rsdf = new SimpleDateFormat(returnFormatStr); 
    Date date=sdf.parse(time);
    List list = new ArrayList();
    List listDay = new ArrayList();
    List weekList = new ArrayList();
    Map map = new HashMap();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.set(Calendar.DATE, 1);

    int month = cal.get(Calendar.MONTH);
    while(cal.get(Calendar.MONTH) == month){
    int week = cal.get(Calendar.DAY_OF_WEEK);
    String weekTo ="";
    switch (week) {
    case 1: weekTo = "日";break;
    case 2: weekTo = "一";break;
    case 3: weekTo = "二";break;
    case 4: weekTo = "三";break;
    case 5: weekTo = "四";break;
    case 6: weekTo = "五";break;
    case 7: weekTo = "六";break; 
    default:
    break;
    }
    weekList.add(weekTo);
    list.add(rsdf.format(cal.getTime()));
    listDay.add(cal.get(Calendar.DATE));
    cal.add(Calendar.DATE, 1);
    }
    map.put("list", list);
    map.put("dayList", listDay);
    map.put("weekList",weekList);
    return map;
    }


    /**
         * [描述/说明] 得到过去N天之前的日期
         * @time 2018-06-04
         * @param days
         * @return yyyy-MM-dd
         */
    public static String getPastDay(String days) {

    Calendar c = Calendar.getInstance();
    //过去n天
    c.setTime(new Date());
    c.add(Calendar.DATE, - Integer.valueOf(days));
    Date d = c.getTime();
             
    return sdfDay.format(d);

    }

    /**
         * [描述/说明] 得到过去N月之前的日期
         * @time 2018-06-04
         * @param days
         * @return yyyy-MM-dd
         */
    public static String getPastMonth(String days) {

    Calendar c = Calendar.getInstance();
    //过去n月
    c.setTime(new Date());
    c.add(Calendar.MONTH, - Integer.valueOf(days));
    Date m = c.getTime();

    return sdfDay.format(m);

    }

    /**
         * [描述/说明] 得到过去N年之前的日期
         * @time 2018-06-04
         * @param days
         * @return yyyy-MM-dd
         */
    public static String getPastYear(String days) {

    Calendar c = Calendar.getInstance();
    //过去n月
    c.setTime(new Date());
    c.add(Calendar.YEAR, - Integer.valueOf(days));
    Date m = c.getTime();

    return sdfDay.format(m);

    }



    }
  • 你可能感兴趣的:(DateUtil)