使用Calendar获取过往一年的每周周一和周日的时间戳和日期

2017-12-22  本文已影响0人  光羽隼
  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);这个方法可以将当前时间进行推移;

上一篇下一篇

猜你喜欢

热点阅读