zoukankan      html  css  js  c++  java
  • 时间处理工具类DateUtils

    public class DateUtils
    {
            public static final String                            SHORT_DATE             = "yyyy-MM-dd";
            public static final String                            SHORT_DATE_US  = "yyyy-MM-dd";
            public static final String                            LONG_DATE              = "yyyy-MM-dd HH:mm:ss";
            public static final String                            YMDHM                  = "yyyy-MM-dd HH:mm";
            public static final String                            HM                             = "HH:mm";
            public static final SimpleDateFormat  DF_SHORT_CN            = new SimpleDateFormat(SHORT_DATE);
            public static final SimpleDateFormat  SDF_YMDHM              = new SimpleDateFormat(YMDHM);
            public static final SimpleDateFormat  SDF_HM                 = new SimpleDateFormat(HM);
            public static final SimpleDateFormat  DF_CN                  = new SimpleDateFormat(LONG_DATE);
            public static final int                                      REALTIME               = 0;
     
            public static final int                                      HOURLY                 = 1;
            public static final int                                      DAILY                  = 2;
            public static final int                                      BIWEEKLY               = 3;
            public static final int                                      WEEKLY                 = 4;
            public static final int                                      MONTHLY                = 5;
            public static final int                                      QUARTLY                = 6;
            public static final int                                      BIYEARLY               = 7;
            public static final int                                      YEARLY                 = 8;
     
            public static final long                              day                            = 86400000l;
     
            private DateUtils()
            {
            }
     
            /**
             * Calendar -> String
             */
            public static String format(Calendar cal)
            {
                   return format(cal.getTime());
            }
     
            /**
             * Calendar,String -> String
             */
            public static String format(Calendar cal, String pattern)
            {
                   return format(cal.getTime(), pattern);
            }
     
            /**
             * Calendar,DateFormat -> String
             */
            public static String format(Calendar cal, DateFormat df)
            {
                   return format(cal.getTime(), df);
            }
     
            /**
             * Date -> String
             */
            public static String format(Date date)
            {
                   return format(date, DF_CN);
            }
     
            /**
             * Date,String -> String
             */
            public static String format(Date date, String pattern)
            {
                   SimpleDateFormat df = new SimpleDateFormat(pattern);
                   return format(date, df);
            }
     
            public static String format(long ts, DateFormat df)
            {
                   return format(new Date(ts), df);
            }
            
            public static String format(long ts, String format,Locale local)
            {
                   SimpleDateFormat df = new SimpleDateFormat(format, local);
                   return format(new Date(ts), df);
            }
     
            /**
             * Date,DateFormat -> String
             */
            public static String format(Date date, DateFormat df)
            {
    //             if (date == null)
    //                     return "";
    //
    //             if (df != null)
    //             {
    //                     return df.format(date);
    //             }
    //             return DF_CN.format(date);
                   if(date==null)return "";
                   return getRealDateFormat(df).format(date);
            }
     
            public static long getGapMin(long minsec)
            {
                   return minsec / 60000;
            }
     
            public static long getGapMinByAddtime(long addtime)
            {
                   return getGapMinByAddtime(addtime, System.currentTimeMillis());
            }
     
            public static long getGapMinByAddtime(long addtime, long current)
            {
                   return getGapMin(current - addtime);
            }
     
            public static String getGapMinStirngByAddtime(long addtime, long current)
            {
                   return getMinStirngBySubTime(getGapMin(current - addtime));
            }
     
            public static String getMinStirngBySubTime(long min)
            {
                   long hour = min / 60;
                   long restmin = min % 60;
                   return (hour > 0 ? hour + "时" : "") + restmin + "分";
            }
     
            public static Calendar parseDateString(String str, String format)
            {
                   if (str == null)
                   {
                           return null;
                   }
                   Date date = null;
                   SimpleDateFormat df = new SimpleDateFormat(format);
                   try
                   {
                           date = getRealDateFormat(df).parse(str);
                   }
                   catch (Exception ex)
                   {
     
                   }
                   if (date == null)
                   {
                           return null;
                   }
                   Calendar cal = Calendar.getInstance();
                   cal.setTime(date);
                   return cal;
            }
     
            /**
             * returns the current date in the default format
             */
            public static String getToday()
            {
                   return format(new Date());
            }
     
            public static Date getYesterday()
            {
                   Calendar cal = Calendar.getInstance();
                   cal.add(Calendar.DATE, -1);
     
                   return cal.getTime();
            }
     
            public static Calendar getFirstDayOfMonth()
            {
                   Calendar cal = getNow();
                   cal.set(Calendar.DAY_OF_MONTH, 1);
                   cal.set(Calendar.HOUR_OF_DAY, 0);
                   cal.set(Calendar.MINUTE, 0);
                   cal.set(Calendar.SECOND, 0);
     
                   return cal;
            }
            /**
             * 获取某月的第一天
             * @param month
             * @return Calendar
             * */
            public static Calendar getFirstDayOfMonth(int month)
            {
                   Calendar cal = Calendar.getInstance();
                   cal.set(Calendar.MONTH, month);
                   cal.set(Calendar.DAY_OF_MONTH, 1);
                   cal.set(Calendar.HOUR_OF_DAY, 0);
                   cal.set(Calendar.MINUTE, 0);
                   cal.set(Calendar.SECOND, 0);
     
                   return cal;
            }
     
            public static Calendar getNow()
            {
                   return Calendar.getInstance();
            }
     
            /**
             * add some month from the date
             */
            public static Date addMonth(Date date, int n) throws Exception
            {
                   Calendar cal = getNow();
                   cal.setTime(date);
                   cal.add(Calendar.MONTH, n);
                   return cal.getTime();
            }
     
            public static int daysBetween(Date returnDate)
            {
                   return daysBetween(null, returnDate);
            }
     
            public static long tirmDay(Calendar time)
            {// 得到当天的0点时间
                   time.set(Calendar.HOUR_OF_DAY, 0);
                   time.set(Calendar.MINUTE, 0);
                   time.set(Calendar.SECOND, 0);
                   time.set(Calendar.MILLISECOND, 0);
                   return time.getTimeInMillis();
            }
     
            public static int daysBetween(Date now, Date returnDate)
            {
                   if (returnDate == null)
                           return 0;
     
                   Calendar cNow = getNow();
                   Calendar cReturnDate = getNow();
                   if (now != null)
                   {
                           cNow.setTime(now);
                   }
                   cReturnDate.setTime(returnDate);
                   setTimeToMidnight(cNow);
                   setTimeToMidnight(cReturnDate);
                   long nowMs = cNow.getTimeInMillis();
                   long returnMs = cReturnDate.getTimeInMillis();
                   return millisecondsToDays(nowMs - returnMs);
            }
     
            private static int millisecondsToDays(long intervalMs)
            {
                   return (int) (intervalMs / (1000 * 86400));
            }
     
            private static void setTimeToMidnight(Calendar calendar)
            {
                   calendar.set(Calendar.HOUR_OF_DAY, 0);
                   calendar.set(Calendar.MINUTE, 0);
                   calendar.set(Calendar.SECOND, 0);
            }
     
            public static String formatDate(Object obj, String format)
            {
                   String result = "";
                   try
                   {
                           Date date = (Date) obj;
                           result = format(date, format);
                   }
                   catch (Exception e)
                   {
     
                   }
                   return result;
            }
     
            public static String formatDate(Object obj)
            {
                   return formatDate(obj, SHORT_DATE);
            }
     
            public static String getSunday(String date)
            {
                   Calendar c = DateUtils.parseDateString(date, "yyyy-MM-dd");
                   int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
                   if (dayofweek == 0)
                   {
                           dayofweek = 0;
                   }
                   c.add(Calendar.DATE, -dayofweek);
                   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                   return sdf.format(c.getTime());
            }
     
            public static Calendar getStartTime(Calendar calendar, int interval)
            {
                   if (calendar == null)
                           return null;
                   Calendar fromtime = Calendar.getInstance();
                   fromtime.setTimeZone(calendar.getTimeZone());
                   fromtime.set(Calendar.MILLISECOND, 0);
                   int y = calendar.get(Calendar.YEAR);
                   int m = calendar.get(Calendar.MONTH);
                   int d = calendar.get(Calendar.DAY_OF_MONTH);
                   if (interval == DAILY || interval == HOURLY)
                   {
                           fromtime.set(y, m, d, 0, 0, 0);
                   }
                   else if (interval == WEEKLY)
                   {
                           fromtime.set(y, m, d, 0, 0, 0);
                           fromtime.add(Calendar.DATE, 1 + Calendar.SUNDAY - fromtime.get(Calendar.DAY_OF_WEEK));
                   }
                   else if (interval == MONTHLY)
                   {
                           fromtime.set(y, m, 1, 0, 0, 0);
                   }
                   else if (interval == BIWEEKLY)
                   {
                           fromtime.set(y, m, d, 0, 0, 0);
                           fromtime.add(Calendar.WEEK_OF_YEAR, (-1) * (fromtime.get(Calendar.WEEK_OF_YEAR) + 1) % 2);
                           fromtime.add(Calendar.DATE, Calendar.SUNDAY - fromtime.get(Calendar.DAY_OF_WEEK));
                   }
                   else if (interval == YEARLY)
                   {
                           fromtime.set(y, m, d, 0, 0, 0);
                   }
                   else if (interval == QUARTLY)
                   {
                           fromtime.set(y, (m / 3) * 3, 1, 0, 0, 0);
                   }
                   else if (interval == BIYEARLY)
                   {
                           fromtime.set(y, (m / 6) * 6, 1, 0, 0, 0);
                   }
                   return fromtime;
            }
     
            public static Calendar getEndTime(Calendar calendar, int interval)
            {
                   if (calendar == null)
                           return null;
                   Calendar endtime = Calendar.getInstance();
                   endtime.setTimeZone(calendar.getTimeZone());
                   endtime.set(Calendar.MILLISECOND, 0);
                   int y = calendar.get(Calendar.YEAR);
                   int m = calendar.get(Calendar.MONTH);
                   int d = calendar.get(Calendar.DAY_OF_MONTH);
                   if (interval == DAILY)
                   {
                           endtime.set(y, m, d, 0, 0, 0);
                           endtime.add(Calendar.DAY_OF_MONTH, 1);
                   }
                   else if (interval == WEEKLY)
                   {
                           endtime.set(y, m, d, 0, 0, 0);
                           endtime.add(Calendar.DATE, 2 + Calendar.SATURDAY - endtime.get(Calendar.DAY_OF_WEEK));
                   }
                   else if (interval == MONTHLY)
                   {
                           endtime.set(y, m, 1, 0, 0, 0);
                           endtime.add(Calendar.MONTH, 1);
                   }
                   else if (interval == BIWEEKLY)
                   {
                           endtime.set(y, m, d, 0, 0, 0);
                           endtime.add(Calendar.WEEK_OF_YEAR, endtime.get(Calendar.WEEK_OF_YEAR) % 2);
                           endtime.add(Calendar.DATE, 1 + Calendar.SATURDAY - endtime.get(Calendar.DAY_OF_WEEK));
                   }
                   else if (interval == YEARLY)
                   {
                           endtime.set(y + 1, m, d, 0, 0, 0);
                   }
                   else if (interval == QUARTLY)
                   {
                           if (m / 3 == 3)
                           {
                                   endtime.set(y + 1, 0, 1, 0, 0, 0);
                           }
                           else
                           {
                                   endtime.set(y, (m / 3 + 1) * 3, 1, 0, 0, 0);
                           }
                   }
                   else if (interval == BIYEARLY)
                   {
                           if (m / 6 == 1)
                           {
                                   endtime.set(y + 1, 0, 1, 0, 0, 0);
                           }
                           else
                           {
                                   endtime.set(y, (m / 6 + 1) * 6, 1, 0, 0, 0);
                           }
                   }
                   return endtime;
            }
     
            public static long getDays(String startdate, String enddate, String format)
            {
                   Calendar s1 = DateUtils.parseDateString(startdate, format);
                   Calendar s2 = DateUtils.parseDateString(enddate, format);
                   if (s1 != null && s2 != null)
                   {
                           return getDays(s1.getTimeInMillis(), s2.getTimeInMillis());
                   }
                   return 0;
            }
     
            public static long getMonthDays(String date, String format)
            {
                   Calendar cal = DateUtils.parseDateString(date, format);
                   if (cal != null)
                   {
                           Calendar starttime = DateUtils.getStartTime(cal, DateUtils.MONTHLY);
                           Calendar endtime = DateUtils.getEndTime(cal, DateUtils.MONTHLY);
                           return getDays(starttime.getTimeInMillis(), endtime.getTimeInMillis());
                   }
                   return 0;
            }
     
            public static long getDays(long startdate, long enddate)
            {
                   return (enddate - startdate) / day;
            }
     
            public static String format(Long l, String pattern)
            {
                   if(l==null)return "";
                   Calendar cal = Calendar.getInstance();
                   cal.setTimeInMillis(l);
                   return format(cal.getTime(), pattern);
            }
            
            public static DateFormat getRealDateFormat(DateFormat df)
            {
                   return df==null?new SimpleDateFormat(SHORT_DATE_US,Locale.US):df;
            }
     
            //smdate="2004-03-26 13:31:40"
            //bdate="2004-03-26 11:30:24
        public static String daysBetween(String smdate,String bdate,String formate) throws ParseException
        {
            SimpleDateFormat df = new SimpleDateFormat(formate);
                   Date now=null;
                   Date date=null;
                   String result="";
                   try {
                           now = df.parse(smdate);
                           date = df.parse(bdate);
                            long l=now.getTime()-date.getTime();
                            long day=l/(24*60*60*1000);
                            long hour=(l/(60*60*1000)-day*24);
                            long min=((l/(60*1000))-day*24*60-hour*60);
                            long s=(l/1000-day*24*60*60-hour*60*60-min*60);
                            //System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
                            result= day==0?"":day+"天";
                            result+=hour==0?"":hour+"小时";
                            result+=min==0?"":min+"分";
                            result+=s==0?"":s+"秒";
                   } catch (ParseException e) {
                           // TODO Auto-generated catch block
                           result="";
                   }
                   return result;
        }  
        
        /**
         * 获取当前月与之前的N-1个月份
         * @param n 获取月份数
         * @return 'yyyy-MM'
         * */
        public static List<String> getCurrentMonths(int n){
                   List<String> months=new ArrayList<String>();
                   for(int i=n-1;i>=0;i--){
                           Calendar cal = Calendar.getInstance();
                           cal.add(Calendar.MONTH,i-n+1);
                       int month = cal.get(Calendar.MONTH) + 1;
                       int year = cal.get(Calendar.YEAR);
                       months.add(year+""+(month<10?"0"+month:""+month));
                   }
                   return months;
            }
        /**
         * 获取某年最后一天
         * @param year int
         * @return Date
         * */
        public static Date getCurrYearLast(int year){
                   Calendar calendar = Calendar.getInstance();
                   calendar.clear();
                   calendar.set(Calendar.YEAR, year);
                   calendar.roll(Calendar.DAY_OF_YEAR, -1);
                   Date currYearLast = calendar.getTime();
                   
                   return currYearLast;
            }    
    }
  • 相关阅读:
    SpringMVC(四)-- 文件下载、自定义拦截器、异常处理
    SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传
    SpringMVC(二)--处理数据模型、ModelAndView、Model、Map、重定向、@ModelAttribute、
    SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等
    反射
    servlet基础
    eclipse为项目设置jdk
    mysql创建表时符号``的作用
    redis进阶
    相对路径和绝对路径的区别
  • 原文地址:https://www.cnblogs.com/yzuzhang/p/4720027.html
Copyright © 2011-2022 走看看