zoukankan      html  css  js  c++  java
  • JAVA获取各种日期时间

    31 public void printFormatDate(Date d) {
    32 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    33 System.out.println(df.format(d));
    34 }
    35
    36 public void test1() {// 下个月第一天 37 Date d = new Date();
    38 d = DateUtils.ceiling(d, Calendar.MONTH);// 进位月份 39 printFormatDate(d);// 2016-02-01 00:00:00 40 }
    41
    42 public void test2() {// 下个月第一天 43 Date d = new Date();
    44 d = DateUtils.addMonths(d, 1);// 月+1 45 d = DateUtils.setDays(d, 1);// 设置日为1号 46 d = DateUtils.truncate(d, Calendar.DATE);// 过滤时分秒 47 printFormatDate(d);// 2016-02-01 00:00:00 48 }
    49
    50 public void test3() {// 当月最后一天最后一秒 51 Date d = new Date();
    52 d = DateUtils.ceiling(d, Calendar.MONTH);// 进位月份 53 d = DateUtils.addMilliseconds(d, -1);// 减少1秒 54 printFormatDate(d);// 2016-01-31 23:59:59 55 }
    56
    57 public void test4() {// 当月第一天第一秒 58 Date d = new Date();
    59 d = DateUtils.truncate(d, Calendar.MONTH);// 截取时间到月份 60 printFormatDate(d);// 2016-01-01 00:00:00 61 }
    62
    63 public void test5() {// 下个月的这个时候 64 Date d = new Date();
    65 d = DateUtils.addMonths(d, 1);
    66 printFormatDate(d);// 2016-02-21 09:46:02 67 }
    68
    69 public void test6() {// 昨天的这个时候 70 Date d = new Date();
    71 d = DateUtils.addDays(d, -1);// 增加1月,如果下个月没有这1天,那就不加 72 printFormatDate(d);// 2016-01-20 09:46:48 73 }
    74
    75 public void test7() {// addMonth的注意点:2月没有29号 76 Date d = new Date();
    77 d = DateUtils.setDays(d, 29);
    78 d = DateUtils.addMonths(d, 1);// 并没有增加 79 printFormatDate(d);// 2016-01-29 09:47:45 80 }
    81
    82 public void test8() {// 这个月15号 83 Date d = new Date();
    84 d = DateUtils.setDays(d, 15);
    85 d = DateUtils.truncate(d, Calendar.DATE);// 截取时间到日 86 printFormatDate(d);// 2016-01-15 00:00:00 87 }
    88
    89 public void test9() {// 输出包含今天的这个星期的每一天,星期第一天是周日 90 Date d = new Date();
    91 Iterator<Calendar> c = DateUtils.iterator(d, DateUtils.RANGE_WEEK_SUNDAY);
    92 System.out.println();
    93 while (c.hasNext()) {
    94 printFormatDate(new Date(c.next().getTimeInMillis()));
    95 }
    96 }
    97
    98 public void test10() {// 今天是今年第几天 99 Date d = new Date();
    100 System.out.println(DateUtils.getFragmentInDays(d, Calendar.YEAR));// 21101 }
    102
    103 public void test11() {// 这个月第一个周日104 Date d = new Date();
    105 d = DateUtils.setDays(d, 1);
    106 while (true) {
    107 Calendar c = Calendar.getInstance();
    108 c.setTime(d);
    109 if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    110 printFormatDate(d);// 2016-01-03 10:31:43111 break;
    112 } else {
    113 d = DateUtils.addDays(d, 1);
    114 }
    115 }
    116 }
    117
    118 public void test12() {// 距2月1号还有多少天119 Date d = new Date();
    120 Date d2 = new Date();
    121 d2 = DateUtils.ceiling(d, Calendar.MONTH);// 2.1号122 long day2 = DateUtils.getFragmentInDays(d2, Calendar.YEAR);//2.1是今年第几天?123 long day1 = DateUtils.getFragmentInDays(d, Calendar.YEAR);//今天是今年第几天?124 System.out.println(day2 - day1);//11125 }
     
    01.获取当月的天数
     Calendar a = Calendar.getInstance();  
            a.set(Calendar.DATE, 1);  
            a.roll(Calendar.DATE, -1);  
            int maxDate = a.get(Calendar.DATE);  
            return maxDate; 
     
    02.根据年 月 获取对应的月份 天数      
        Calendar a = Calendar.getInstance();     
        a.set(Calendar.YEAR, year);     
        a.set(Calendar.MONTH, month - 1);     
        a.set(Calendar.DATE, 1);     
        a.roll(Calendar.DATE, -1);      
      int maxDate = a.get(Calendar.DATE); 
     
    03.根据日期 找到对应日期的 星期 
    String dayOfweek = "-1";  
            try {  
                SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");  
                Date myDate = myFormatter.parse(date);  
                SimpleDateFormat formatter = new SimpleDateFormat("E");  
                String str = formatter.format(myDate);  
                dayOfweek = str;  
                  
            } catch (Exception e) {  
                System.out.println("错误!");  
            }  
     
     
     /**
         * 计算开始日期到结束日期之间月数
         * @param begDate  开始日期
         * @param endDate  结束日期
         * @return
         */
        public static BigDecimal calculationAmount(Date begDate,Date endDate) {
            Calendar cal1 = Calendar.getInstance(); 
            cal1.setTime(begDate);
            cal1.add(Calendar.MONTH, 1); 
            cal1.set(Calendar.DAY_OF_MONTH, cal1.getActualMinimum(Calendar.DAY_OF_MONTH));  
            Date preMonth =cal1.getTime(); //开始日期的下一个月
            Calendar cal2 = Calendar.getInstance(); 
            cal2.setTime(endDate); 
            cal2.add(Calendar.MONTH, -1); 
            cal2.set(Calendar.DAY_OF_MONTH, cal2.getActualMaximum(Calendar.DAY_OF_MONTH));
            Date lastMonth = cal2.getTime(); //结束日期的上一个月
            long midValue = 0;//开始日期的下一个月和结束日期的上一个月之间有多少月
            if(preMonth.before(lastMonth)) {
                midValue = DataTimeUtils.differentDate("M", preMonth, lastMonth)+1;
            }
            long begDateNum = DataTimeUtils.differentDate("D", begDate, getEndMonthDate(begDate))+1;//开始日期到当前月底的的天数
            long begMouthNum = getCurrentMonthDay(begDate);//开始日期当前月有多少天
            BigDecimal begValue = new BigDecimal(begDateNum).divide(new BigDecimal(begMouthNum),6,BigDecimal.ROUND_HALF_UP);
            long endDateNum = DataTimeUtils.differentDate("D", getPreMonthDate(endDate),endDate)+1;//结束日期当月的第一天到结束日期的天数
            long endMouthNum = getCurrentMonthDay(endDate);//结束日期当前月有多少天
            BigDecimal endValue = new BigDecimal(endDateNum).divide(new BigDecimal(endMouthNum),6,BigDecimal.ROUND_HALF_UP);
            BigDecimal sumDate =begValue.add(endValue.add(new BigDecimal(midValue)));
            return sumDate;
        }
     
    /**
         * 判断日期是否在自然季内
         */
        public static int getNaturalSeason(Date begDate) {
            Calendar beg = Calendar.getInstance();//设置开始日期
            beg.setTime(begDate);
            if((beg.get(Calendar.MONTH)+1)>0 && (beg.get(Calendar.MONTH)+1)<=3) {
                return 1;
            }else if((beg.get(Calendar.MONTH)+1)>=4 && (beg.get(Calendar.MONTH)+1)<=6) {
                return 2;
            }else if((beg.get(Calendar.MONTH)+1)>=7 && (beg.get(Calendar.MONTH)+1)<=9) {
                return 3;
            }else if((beg.get(Calendar.MONTH)+1)>=10 && (beg.get(Calendar.MONTH)+1)<=12) {
                return 4;
            }
            return 0;
        }
        
        /**
         * 判断日期是否在自然半年内
         */
        public static int getNaturalHalfYear(Date begDate) {
            Calendar beg = Calendar.getInstance();//设置开始日期
            beg.setTime(begDate);
            if((beg.get(Calendar.MONTH)+1)>0 && (beg.get(Calendar.MONTH)+1)<=6) {
                return 1;
            }else if((beg.get(Calendar.MONTH)+1)>=7 && (beg.get(Calendar.MONTH)+1)<=12) {
                return 2;
            }
            return 0;
        }
        /**
         * 判断日期是否在自然年内
         */
        public static int getNaturalYear(Date begDate) {
            Calendar beg = Calendar.getInstance();//设置开始日期
            beg.setTime(begDate);
            if((beg.get(Calendar.MONTH)+1)>0 && (beg.get(Calendar.MONTH)+1)<=12) {
                return 1;
            }
            return 0;
        }
     
     
     
    /**
         * 获取任意时间的月第一天
         * @param repeatDate
         * @return
         */ 
        public static Date getPreMonthDate(Date repeatDate){ 
            return DateUtils.truncate(repeatDate,Calendar.MARCH);
        }
            
        /**
         * 获取任意时间的月的最后一天
         * @param repeatDate
         * @return
        */ 
        public static Date getEndMonthDate(Date repeatDate) { 
            Calendar calendar = Calendar.getInstance(); 
            calendar.setTime(repeatDate); 
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); 
            return calendar.getTime(); 
        } 
     
     
    /**
         * 根据日期计算当月有多少天
         * @param date
         * @return
         */
        public static long getCurrentMonthDay(Date date) { 
            Calendar a = Calendar.getInstance(); 
            a.setTime(date);
            a.set(Calendar.DATE, 1); 
            a.roll(Calendar.DATE, -1); 
            int maxDate = a.get(Calendar.DATE); 
            return maxDate; 
        }
        
     
    /**
         * 判断时间格式
         */
        public static boolean isValidDate(String str) {
             boolean convertSuccess=true;
             // 指定日期格式为四位年/两位月份/两位日期,注意yyyy-MM-dd区分大小写;
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                  try {
             // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007-02-29会被接受,并转换成2007-03-01
                      format.setLenient(false);
                      format.parse(str);
                   } catch (ParseException e) {
             // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
                        convertSuccess=false;
                    }
                    return convertSuccess;
             }
     
     /**
         *
         * @param ts MinimumGuaranteeDomain 的list
         * @return  false 时间交叉  true 时间不交叉
         */
        public static  boolean check(List<MinimumGuaranteeDomain>  ts ) {
            Collections.sort(ts, new MinimumGuaranteeDomain());
            boolean flag=true;
            for(int i=0; i<ts.size()-1;i++) {
                MinimumGuaranteeDomain item1=ts.get(i);;
                MinimumGuaranteeDomain item2=ts.get(i+1);
                Date end = new Date(DataTimeUtils.getTimeLong(item1.getEnddate())*1000);
                Date beg = new Date(DataTimeUtils.getTimeLong(item2.getBegdate())*1000);
                if(DataTimeUtils.differentDate("D",end,beg)<0) {
                    flag=false;
                    break;
                }            
             }
            return flag ;
        }
  • 相关阅读:
    前端资源分享
    Java的wait(), notify()和notifyAll()使用心得(转)
    Java 理论与实践: 处理 InterruptedException(转)
    关于线程中断的总结
    Python入门(good)
    看着自己有什么样的资源,利用好这些资源就好了。不要看着别人的资源流口水(转)
    android手机SD卡中的android_secure目录
    Android中ExpandableListView控件基本使用
    华为的面试经历
    Flex强制类型转换错误
  • 原文地址:https://www.cnblogs.com/gemiaomiao/p/10550754.html
Copyright © 2011-2022 走看看