美文网首页
使用Calendar获取过往一年的每周周一和周日的时间戳和日期

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

作者: 光羽隼 | 来源:发表于2017-12-22 14:56 被阅读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);这个方法可以将当前时间进行推移;

    相关文章

      网友评论

          本文标题:使用Calendar获取过往一年的每周周一和周日的时间戳和日期

          本文链接:https://www.haomeiwen.com/subject/uoatgxtx.html