我要跟据当月日期处理数据(2008-1-1 到 2008-1-31号),怎样用java来取得每月第一天与最后一天

解决方案 »

  1.   

    http://hi.baidu.com/jyhebj/blog/item/c79f2c38a2aac5f4b311c7d7.html
      

  2.   

    http://hi.baidu.com/jyhebj/blog/item/c79f2c38a2aac5f4b311c7d7.html
      

  3.   

    用Calendar
    Calendar calCurr = Calendar.getInstance();
    calCurr.set(Calendar.DAY_OF_MONTH, calCurr.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
    Date lastDayOfTheMonth = calCurr.getTime();
    calCurr.set(Calendar.DAY_OF_MONTH, 1);
    Date firstDayOfTheMonth = calCurr.getTime();
      

  4.   

    谢谢 rrong_m  我的问题已解决了   /**
         * 取当月的开始日期与结束日期
         * @return String[] String[0]:开始日期 String[1]:结束日期
         */
        public static String[] beginEndDate() {
            String beginTime = null; 
            String endTime = null;
            String [] dateArray = new String[2];
            Date currentDate = new Date();
            SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM");
            System.out.println("formatDate: " + formatDate.format(currentDate));
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DATE, 1); //设置当月的第一天
             beginTime=calendar.get(Calendar.DATE)+""; 
            calendar.roll(Calendar.DATE,-1);//当月日期回滚一天,就是最后一天
             endTime=calendar.get(Calendar.DATE)+"";
            beginTime=formatDate.format(currentDate) + "-0" +beginTime; 
            endTime=formatDate.format(currentDate)+ "-" +endTime;
            System.out.println(beginTime + " to  " + endTime);
            dateArray[0]=beginTime;
            dateArray[1]=endTime;
            return dateArray;
        }
      

  5.   

    无聊,写了下,提供一个思路,仅供楼主参考。。
    /**
     * 获取某月份的第一天和最后一天
     * @param diffMonth 相差月份的值,即-1代表求上一个月,0代表求当月,1代表求下月,依此类推
     */
    public static void printStartDayAndEndDay( Integer diffMonth ){
    SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
    Calendar calendar = Calendar.getInstance();
    calendar.add( Calendar.MONTH , diffMonth );

    //第一天
    calendar.set( Calendar.DATE , 1 );
    String dayFirst = dateFormat.format( calendar.getTime() );
    System.out.println( dayFirst ); //月份加1,再设置成月份的第一天,再减去1天,即变成上月的最后一天。
    calendar.add( Calendar.MONTH , 1 );
    calendar.set( Calendar.DATE , 1 );
    calendar.add( Calendar.DATE , -1 );
    String dayEnd = dateFormat.format( calendar.getTime() );
    System.out.println( dayEnd );
    }
      

  6.   

    java中关于时间日期操作的常用函数 
    你参照一下http://www.bbsvs.com/j2ee/thread-41-1-1.aspx
      

  7.   

    /**
       * 获取给定日期和天数后的日期  给定日期必须为8位
       * 给定天数为正整数,则向后推日期,如:date=20060214,numOfDay=5  则返回 20060219
       * 给定天数为负整数,则向前推日期,如:date=20060214,numOfDay=-5  则返回 20060209
       * @param date 给定日期
       * @param numOfDay 给定天数
       * @return String
       */
      public static String pbfGetNextDate(String date, int numOfDay) {
        Date nextDate = null;
        if (date.length() == 8) {
          if (new TRPBF().pbfCheckDate(date)) {
            int year = Integer.parseInt(date.substring(0, 4));
            int month = Integer.parseInt(date.substring(4, 6));
            int day = Integer.parseInt(date.substring(6, 8));
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
            java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(year,
                month - 1, day);
            try {
              gcal.add(gcal.DATE, numOfDay);
              nextDate = gcal.getTime();
              return simpleDateFormat.format(nextDate);
            }
            catch (Exception ex) {
              return failed;
            }
          }
          else {
            return failed;
          }
        }
        else {
          return failed;
        }
      }  /**
       * 获取给定日期时间和小时后的日期  给定日期时间必须为14位
       * 给定小时为正整数,则向后推  同pbfGetNextDate
       * 给定小时为负整数,则向前推  同pbfGetNextDate
       * @param dateTime 给定日期
       * @param numOfHours 给定小时
       * @return String
       */
      public static String pbfGetNextDateH(String dateTime, int numOfHours) {
        Date nextDateTime = null;
        if (dateTime.length() == 14) {
          if (new TRPBF().pbfCheckDateTime(dateTime)) {
            int year = Integer.parseInt(dateTime.substring(0, 4));
            int month = Integer.parseInt(dateTime.substring(4, 6));
            int day = Integer.parseInt(dateTime.substring(6, 8));
            int hours = Integer.parseInt(dateTime.substring(8, 10));
            int minute = Integer.parseInt(dateTime.substring(10, 12));
            int second = Integer.parseInt(dateTime.substring(12, 14));
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
                "yyyyMMddHHmmss");
            java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(
                year, month - 1, day, hours, minute, second);
            try {
              gcal.add(gcal.HOUR_OF_DAY, numOfHours);
              nextDateTime = gcal.getTime();
              return simpleDateFormat.format(nextDateTime);
            }
            catch (Exception ex) {
              return failed;
            }
          }
          else {
            return failed;
          }
        }
        else {
          return failed;
        }
      }  /**
       * 获取给定日期和月数后的日期 给定日期必须为8位
       * 给定月数为正整数,则向后推  同pbfGetNextDate
       * 给定月数为负整数,则向前推  同pbfGetNextDate
       * @param date 给定日期
       * @param numOfMonth 给定月数
       * @return String
       */
      public static String pbfGetNextDateM(String date, int numOfMonth) {
        Date nextDate = null;
        if (date.length() == 8) {
          if (new TRPBF().pbfCheckDate(date)) {
            int year = Integer.parseInt(date.substring(0, 4));
            int month = Integer.parseInt(date.substring(4, 6));
            int day = Integer.parseInt(date.substring(6, 8));
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
            java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(year,
                month - 1, day);
            try {
              gcal.add(gcal.MONTH, numOfMonth);
              nextDate = gcal.getTime();
              return simpleDateFormat.format(nextDate);
            }
            catch (Exception ex) {
              return failed;
            }
          }
          else {
            return failed;
          }
        }
        else {
          return failed;
        }
      }  /**
       * 获取给定年月的最后(最大)日期  传入yearMonth必须为6位
       * 如:传入yearMonth=20002 则返回  20060229
       * @param year
       * @param month
       * @return String
       */
      public static String pbfGetLastDate(String yearMonth) {
        String year = null;
        String month = null;
        if (yearMonth.length() == 6) {
          year = yearMonth.substring(0, 4);
          month = yearMonth.substring(4, 6);
          if (Integer.parseInt(year) < 1900 || Integer.parseInt(month) < 0 ||
              Integer.parseInt(month) > 12) {
            return failed;
          }
          else {
            GregorianCalendar gcal = new GregorianCalendar(Integer.parseInt(
                year),
                Integer.parseInt(month), 0);
            int maxDayOfMonth = gcal.getActualMaximum(gcal.DAY_OF_MONTH);
            return year + month + String.valueOf(maxDayOfMonth);
          }
        }
        else {
          return failed;
        }
      }  /**
       * 获取给定日期的周数  传入日期必须为8位
       * 如:传入 date=20060214 则返回 2  (20060214是周2)
       * @param date
       * @return String
       */
      public static String pbfGetWeek(String date) {
        if (date.length() == 8) {
          if (new TRPBF().pbfCheckDate(date)) {
            int year = Integer.parseInt(date.substring(0, 4));
            int month = Integer.parseInt(date.substring(4, 6));
            int day = Integer.parseInt(date.substring(6, 8));
            GregorianCalendar gcal = new GregorianCalendar(year, month - 1, day);
            int week = gcal.get(gcal.DAY_OF_WEEK) - gcal.getFirstDayOfWeek();
            return String.valueOf(week);
          }
          else {
            return failed;
          }
        }
        else {
          return failed;
        }
      }  /**
       * 获取给定两个日期间的间隔  传入日期必须为8位
       * 间隔区分 0:month 1:day 2:hours 3:minute 4:second
       * @param date1 日期1
       * @param date2 日期2
       * @param diff
       * @return String
       */
      public static String pbfGetDiffDate(String date1, String date2, int diff) {
        long num = 0;
        if (date1.length() == 8 && date2.length() == 8) {
          if (!new TRPBF().pbfCheckDate(date1) || !new TRPBF().pbfCheckDate(date2)) {
            return failed;
          }
          else {
            int year1 = Integer.parseInt(date1.substring(0, 4));
            int year2 = Integer.parseInt(date2.substring(0, 4));
            int month1 = Integer.parseInt(date1.substring(4, 6));
            int month2 = Integer.parseInt(date2.substring(4, 6));
            int day1 = Integer.parseInt(date1.substring(6, 8));
            int day2 = Integer.parseInt(date2.substring(6, 8));
            java.util.GregorianCalendar gcal1 = new GregorianCalendar(year1,
                month1 - 1, day1);
            java.util.GregorianCalendar gcal2 = new GregorianCalendar(year2,
                month2 - 1, day2);
            switch (diff) {
              case 0:
                num = (year1 * 12 + month1) - (year2 * 12 + month2);
                break;
              case 1:
                num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
                    60 / 60 / 24;
                break;
              case 2:
                num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
                    60 / 60;
                break;
              case 3:
                num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
                    60;
                break;
              case 4:
                num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000;
                break;
              default:
                return failed;
            }
            return String.valueOf(Math.abs(num));
          }
        }
        else {
          return failed;
        }
      }