Calendarを使用して、過去1年間の毎週月曜日と日曜日のタイムスタンプと日付を取得します.

2904 ワード

  private Calendar calendar;
  private SimpleDateFormat simpleDateFormat;
  private void getWeekTime() {
        simpleDateFormat = new SimpleDateFormat("yyyy MM dd ");
        timeList.clear();

        //      
        int currentYear = calendar.get(Calendar.YEAR);
        int currentMonth = calendar.get(Calendar.MONTH);


        //    
        calendar.set(Calendar.MONTH, currentMonth);
        calendar.set(Calendar.YEAR, currentYear);

        //         2 ,            
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        for (int i = 0; i < 52; i++) {

            //        ( , , ),                
            int year1 = calendar.get(Calendar.YEAR);
            int month1 = calendar.get(Calendar.MONTH) + 1;
            int dayWeekStart = calendar.get(Calendar.DAY_OF_MONTH);

            //         
            String dayStart;
            //            ,      ,    / / ,   ,    / 
            if (year1 != currentYear) {
                dayStart = year1 + "/" + month1 + "/" + dayWeekStart;
            } else {
                dayStart = month1 + "/" + dayWeekStart;
            }

            //          ,          
            String pattern = year1 + " " + month1 + " " + dayWeekStart + " ";

            //      6 ,        
            calendar.add(Calendar.DATE, 6);


            //         ,       ,            。
            int year2 = calendar.get(Calendar.YEAR);
            int month2 = calendar.get(Calendar.MONTH) + 1;
            int dayWeekEnd = calendar.get(Calendar.DAY_OF_MONTH);

            //         
            String dayEnd = "";
            if (year2 != currentYear) {
                dayEnd = year2 + "/" + month2 + "/" + dayWeekEnd;
            } else {
                dayEnd = month2 + "/" + dayWeekEnd;
            }
            Date date = new Date();
            try {
                date = simpleDateFormat.parse(pattern);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            String title;

            //       ,   “  ”,     “  ”
            if (i == 0) {
                title = "  ";
            } else if (i == 1) {
                title = "  ";
            } else {
                title = dayStart + "-" + dayEnd;
            }

            WeekTime weekTime = new WeekTime(date.getTime(),
                    //        1513526400,         
                    date.getTime() + 1513526400,
                    String.valueOf(year2),
                    String.valueOf(month2),
                    title);
            timeList.add(weekTime);
            //            ,        13 ,     ,       
            calendar.add(Calendar.DATE, -13);
        }
    }

コードは簡略化されていません.主にcalendar.add(Calendar.DATE, num);という方法は現在の時間を推移させることができる.