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;
        }    
}

时间处理工具类DateUtils的更多相关文章

  1. java时间处理工具类--DateUtils

    package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ im ...

  2. java 日期工具类DateUtils

      日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...

  3. [java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  4. Java中Date类型如何向前向后滚动时间,( 附工具类)

    Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...

  5. Java日期时间实用工具类

    Java日期时间实用工具类 1.Date (java.util.Date)    Date();        以当前时间构造一个Date对象    Date(long);        构造函数   ...

  6. jdk8 时间日期工具类(转)

    package com.changfu.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jav ...

  7. JAVA 日期处理工具类 DateUtils

    package com.genlot.common.utils; import java.sql.Timestamp;import java.text.ParseException;import ja ...

  8. Android经常使用工具类DateUtils(二)

    在编写代码中,会经经常使用到时间Date这个类,小编整理了一些经常使用的时间工具类.供大家參考. import java.text.ParseException; import java.text.S ...

  9. 日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)

    /** * */ package com.dsj.gdbd.utils.web; import org.apache.commons.lang3.time.DateFormatUtils; impor ...

随机推荐

  1. codeforces 723B:Text Document Analysis

    Description Modern text editors usually show some information regarding the document being edited. F ...

  2. 更改codeblocks的配色方案

    codeblocks默认只有一种配色方案, 不过我们可以手动添加. 在终端下输入如下命令: cd ~/.codeblocks sudo gedit default.conf 在打开的配置文件中, 找到 ...

  3. MongoDB: CURD操作

    >> 创建:·db.foo.insert({"bar":"baz"}) //如果文档中没有"_id"键会自动增加一个·db.fo ...

  4. spring jdbc分离数据库代码和java代码

    读取配置文件类 package com.eshore.ismp.contract.sql; import java.io.FileInputStream; import java.io.FileNot ...

  5. Oracle 应用于.NET平台

    1. 回顾ADO.NET ADO.NET是一组用于和数据源进行交互的面向对象类库集,它存在于.Net Framework中.通常情况下,数据源可以是各种类型的数据库,利用ADO.NET可以访问目前几乎 ...

  6. python中%和format

    两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些 % In [22]: print '%s' % 'hello world' hello world In [23]: pr ...

  7. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...

  8. wildfly jboss deploy 报 拒绝访问

    用maven clean package wildfly:deploy 部署war,不时报拒绝访问.有时重启wildfly即可.有时需要在standalone.xml中删除war部署: <dep ...

  9. Yocto开发笔记之《Tip-bitbake常用命令》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  10. 【原】js检测移动端横竖屏

    摘要:上周做了一个小项目,但是要放到我们的app上,然而需要横竖屏使用不同的样式.横屏一套,竖屏一套.调用了手机APP那里的api,可是他们那里ios和安卓返回的不一样. 各种头疼.于是用了css3的 ...