項目中涉及到的日期類的實用方法

    // 判斷開始時間在星期幾的位置
    public static int getStartTimeIndex(Date startTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("EEE");
        System.out.println("今天的日期: " + sdf.format(startTime));
        String str = sdf.format(startTime);
        if ("星期日".equals(str)) {
            return 1;
        } else if ("星期一".equals(str)) {
            return 2;
        } else if ("星期二".equals(str)) {
            return 3;
        } else if ("星期三".equals(str)) {
            return 4;
        } else if ("星期四".equals(str)) {
            return 5;
        } else if ("星期五".equals(str)) {
            return 6;
        } else if ("星期六".equals(str)) {
            return 7;
        }
        return 0;
    }
    //獲得兩個日期的中間間隔天數
    public static int getDateSpace(Date date1, Date date2) {

        int result = 0;

        Calendar calst = Calendar.getInstance();
        ;
        Calendar caled = Calendar.getInstance();

        calst.setTime(date1);
        caled.setTime(date2);

        // 設置時間爲0時
        calst.set(Calendar.HOUR_OF_DAY, 0);
        calst.set(Calendar.MINUTE, 0);
        calst.set(Calendar.SECOND, 0);
        caled.set(Calendar.HOUR_OF_DAY, 0);
        caled.set(Calendar.MINUTE, 0);
        caled.set(Calendar.SECOND, 0);
        // 得到兩個日期相差的天數
        int days = ((int) (caled.getTime().getTime() / 1000) - (int) (calst.getTime().getTime() / 1000)) / 3600 / 24;

        return days;
    }

    /**
     * 根據日期獲得所在周的日期
     * 
     * @param mdate
     * @return
     */
    @SuppressWarnings("deprecation")
    public static List<Date> dateToWeek(Date mdate) {
        int b = mdate.getDay();
        Date fdate;
        List<Date> list = new ArrayList<Date>();
        Long fTime = mdate.getTime() - (b + 1) * 24 * 3600000;
        for (int a = 1; a <= 7; a++) {
            fdate = new Date();
            fdate.setTime(fTime + (a * 24 * 3600000));
            list.add(a - 1, fdate);
        }
        return list;
    }

    //獲取上一週所有的日期
    @SuppressWarnings("deprecation")
    public static List<Date> dateToLastWeek(Date mdate) {
        int b = mdate.getDay();
        Date fdate;
        List<Date> list = new ArrayList<Date>();
        Long fTime = mdate.getTime() - (b + 8) * 24 * 3600000;
        for (int a = 1; a <= 7; a++) {
            fdate = new Date();
            fdate.setTime(fTime + (a * 24 * 3600000));
            list.add(a - 1, fdate);
        }
        return list;
    }

    // 日期向前向後推遲幾天

    public static Date delayDate(Date enddate, int num) {
        try {
            SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
            Calendar date = Calendar.getInstance();
            date.setTime(enddate);
            date.set(Calendar.DATE, date.get(Calendar.DATE) + num);
            Date newDate = dft.parse(dft.format(date.getTime()));
            return newDate;
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    // 根據日期獲取到那周的週一是哪天
    public static Date getMonday(Date time) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(time);
         //判斷要計算的日期是否是週日,如果是則減一天計算週六的,否則會出問題,計算到下一週去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天

        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }

    //   System.out.println("要計算日期爲:"+sdf.format(cal.getTime()));
         cal.setFirstDayOfWeek(Calendar.MONDAY);//設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一  
          int day = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天  
          cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值 

          String imptimeBegin = sdf.format(cal.getTime());  
          System.out.println("所在周星期一的日期:"+imptimeBegin); 
          try {
              System.out.println(sdf.parse(imptimeBegin));
            return sdf.parse(imptimeBegin);
        } catch (ParseException e) {
            e.printStackTrace();
        }

          return null;
    }
發佈了37 篇原創文章 · 獲贊 28 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章