黑马程序员技术交流社区

标题: 关于时间计算的工具类 [打印本页]

作者: 胡述灵    时间: 2015-8-27 15:39
标题: 关于时间计算的工具类
/**
         * @param args
         * 我想做的是:希望在原来日期的基础上一块时间段得到一个新的日期
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
        }
        //   返回毫秒
        public static long getMillis(java.util.Date date) {
                java.util.Calendar c = java.util.Calendar.getInstance();
                c.setTime(date);
                return c.getTimeInMillis();
        }
        //  日期加上一段时间得到新的日期
        public static String getAddNewDate(String dateTiem,double newTime){
               
                String[] times=dateTiem.split(" ");
                String oldDate=times[0];
               
               
                //将字符串转相应格式的时间类型
                DateFormat t = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               
                Date t1 = null;
                Date newTimes=null;
                long totalTime=0;
                try {
                        //计算出了所有的时间相加,再计算出日期
                        t1 = t.parse(oldDate);
                        totalTime=(long)(getMillis(t1)+(newTime*60*60*1000));
                       
                        if(times.length>1){
                                String oldTime=times[1];
                                totalTime+=getMinByDateTime(oldTime);
                        }
                         newTimes=new  Date(totalTime);
                       
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return sdf.format(newTimes);
        }
       
        //  日期减去一段时间得到新的日期
        public static String getReduceNewDate(String dateTiem,double newTime){
               
                String[] times=dateTiem.split(" ");
                String oldDate=times[0];
               
                //将字符串转相应格式的时间类型
                DateFormat t = new SimpleDateFormat("yyyy-MM-dd");
               
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               
                Date t1 = null;
                Date newTimes=null;
                try {
                        t1 = t.parse(oldDate);
                        //计算出了所有的时间相加,再计算出日期
                        long totalTime=(long)(getMillis(t1)-(newTime*60*60*1000));
                       
                        if(times.length>1){
                                String oldTime=times[1];
                                totalTime+=getMinByDateTime(oldTime);
                        }
                         newTimes=new  Date(totalTime);
                       
                       
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                return sdf.format(newTimes);
        }
        //知道某年的某个星期求这个星期的第一天的日期
         public static String getDayByWeek(int year,int week)
          {
                         Calendar   calendar   =   Calendar.getInstance();
                        calendar.set(Calendar.YEAR, year);
                        calendar.set(Calendar.WEEK_OF_YEAR,   week);
                        calendar.set(Calendar.DAY_OF_WEEK,   Calendar.SUNDAY);
                        Date d=calendar.getTime();
                        DateFormat t = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        return t.format(d);
          }
         //时间得到毫秒数
         public static long getMinByDateTime(String dateTiem){
                 String[] time=dateTiem.split(":");
                 long dTime=Integer.parseInt(time[0])*60*60*1000;
                 dTime+=Integer.parseInt(time[1])*60*1000;
                 dTime+=Integer.parseInt(time[2])*1000;
                 return dTime;
         }
         //两个日期间的小时数
         public static int getHourseBothDate(String time1,String time2){
                 int time=0;
                 DateFormat t = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 try {
                        Date dt1=t.parse(time1);
                        Date dt2=t.parse(time2);
                       
                        double dtt1=getMillis(dt1)/(1000*60*60);
                        double dtt2=getMillis(dt2)/(1000*60*60);
                        time=(int)Math.floor(dtt1-dtt2);
                
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                 return time;
         }
         //两个日期间的天数
         public static int getDayBothDate(String time1,String time2){
                 int time=0;
                 DateFormat t = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 try {
                        Date dt1=t.parse(time1);
                        Date dt2=t.parse(time2);
                       
                       
                    Calendar   aCalendar=Calendar.getInstance();
                 //里面野可以直接插入date类型
                aCalendar.setTime(dt1);
                 //计算此日期是一年中的哪一天
                int   day1=aCalendar.get(Calendar.DATE);
                aCalendar.setTime(dt2);
                int   day2=aCalendar.get(Calendar.DATE);
                time=day1-day2;
                
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                 return time;
         }
         public static double getMinByDate(String dateTime){
                 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 Date d=null;
                try {
                        d = sdf.parse(dateTime);
                } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                 return getMillis(d)/(1000*60*60);
         }
         
         //格式化年月日
         public static String getDateformat(Date date){
                 SimpleDateFormat sdf=new SimpleDateFormat("yyMMdd");
                 return sdf.format(date);
         }
        /* //得到月日
         public static String getMonthAndDay(){
                 
         }*/




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2