如何在android中获取下一周和上一周的日期

如何在android中获取下一周和上一周的日期,android,Android,这是我的代码,我从中获取给定时间格式的当前周日期,如2017-07-17至2017-07-23 public String getCurrentWeekDate() { Calendar c = GregorianCalendar.getInstance(); System.out.println("Current week = " + Calendar.DAY_OF_WEEK); c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)

这是我的代码,我从中获取给定时间格式的当前周日期,如2017-07-17至2017-07-23

public  String getCurrentWeekDate() {
    Calendar c = GregorianCalendar.getInstance();
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    String startDate = "", endDate = "";
    startDate = df.format(c.getTime());
    c.add(Calendar.DATE, 6);
    endDate = df.format(c.getTime());
    System.out.println("Start Date = " + startDate);
    System.out.println("End Date = " + endDate);

    return  "";
}
这是我的代码,我必须从中显示下周和前一周的日期。请建议我如何增加和减少我在android中的新周日期。

对于下周日历。addCalendar.DAY\u OF_week,1

对于上一周calendar.addCalendar.DAY(周中的天),为-1


由于您已经找到了本周的日期,所以您所要做的就是为前一周的日期减去7天,为下一周的日期加上7天

您可以通过以下代码来实现这一点

public void getCurrentWeekDate(int week) {
    Calendar c = GregorianCalendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
    c.add(Calendar.DAY_OF_WEEK, week);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    String startDate;
    String endDate;
    startDate = df.format(c.getTime());
    c.add(Calendar.DAY_OF_MONTH, 6);
    endDate = df.format(c.getTime());
    System.out.println("Start Date = " + startDate);
    System.out.println("End Date = " + endDate);
}
因此,您的代码如下所示-

int x = -7;
Calendar cal = GregorianCalendar.getInstance();
cal.add( Calendar.DAY_OF_YEAR, x);
Date sevenDaysAgo = cal.getTime();

经过多次尝试,我得到了这个结果:

 public void getCurrentWeekDate(int week) {
    Calendar c = GregorianCalendar.getInstance();
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    String startDate;
    String endDate;
    startDate = df.format(c.getTime());

    // previous week calculation
    Calendar previousWeekCalendar = c;
    previousWeekCalendar.add( Calendar.DAY_OF_YEAR, -7);
    startPreviousWeekDate = df.format(previousWeekCalendar.getTime());
    previousWeekCalendar.add(Calendar.DATE, 6);
    endPreviousWeekDate = df.format(previousWeekCalendar.getTime());

    c.add(Calendar.DATE, 6);
    //for previous week
    //c.add(Calendar.DAY_OF_WEEK, -1);
    //for next week
    c.add(Calendar.DAY_OF_WEEK, week);
    endDate = df.format(c.getTime());


    // Do next week calculation same as previous week. Just check what is the value of c before starting the calculation
    System.out.println("Start Date = " + startDate);
    System.out.println("End Date = " + endDate);
    System.out.println("End Date = " + endDate);

}

如果需要上一周的开始和结束日期,请将currentWeekNumber减1

否则,如果希望下周开始和结束日期将currentWeekNumber增加1


getCurrentWeekDate1;对于next和getCurrentWeekDate-1;是上一周吗?但我必须坚持假设,如果单击“上一周”,它应该再次显示“上一周”。我们单击“上一周”按钮,然后单击“上一周”按钮,然后单击“下一周”,然后单击“上一周”到“上一周”,然后再次单击“下一周”,它应该显示“本周”。再次检查我的答案。我让方法接受week作为参数。基本上,如果调用getCurrentWeekDate0,它表示本周,getCurrentWeekDate1表示下周,getCurrentWeekDate-1前一周。如果这对你有效,你能接受答案吗?不,实际上它不起作用,我像本周一样2017-07-17-2017-07-17,如果单击“下一步”,那么它应该显示2017-07-24-2017-2017-07-30如果我们单击“上一步”,那么它应该是2017-07-17-2017-07-17,如果单击“上一步”,它应该再次显示2017-07-24-2017-07-30那么它应该是2017-07-10-2017-07-6,就像我想要的那样,但是你的代码只给出了一天的时间差i=6;如果v.getId==R.id.previousButtonView{i=i+6;getCurrentWeekDatei;}或者如果v.getId==R.id.nextButtonView{i=i-6;getCurrentWeekDatei;}每次给出当前日期都不起作用,问题是什么。请为我添加修改后的代码以进行调试:我已在答案中的更新代码中添加了前一周的计算。同样,您也可以为下周执行此操作;错误也将出现startPreviousWeekDate和endPreviousWeekDate未定义
 public void getCurrentWeekDate(int week) {
    Calendar c = GregorianCalendar.getInstance();
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    String startDate;
    String endDate;
    startDate = df.format(c.getTime());

    // previous week calculation
    Calendar previousWeekCalendar = c;
    previousWeekCalendar.add( Calendar.DAY_OF_YEAR, -7);
    startPreviousWeekDate = df.format(previousWeekCalendar.getTime());
    previousWeekCalendar.add(Calendar.DATE, 6);
    endPreviousWeekDate = df.format(previousWeekCalendar.getTime());

    c.add(Calendar.DATE, 6);
    //for previous week
    //c.add(Calendar.DAY_OF_WEEK, -1);
    //for next week
    c.add(Calendar.DAY_OF_WEEK, week);
    endDate = df.format(c.getTime());


    // Do next week calculation same as previous week. Just check what is the value of c before starting the calculation
    System.out.println("Start Date = " + startDate);
    System.out.println("End Date = " + endDate);
    System.out.println("End Date = " + endDate);

}
fun getWeekDates(currentWeek: Int): Array<String?> {
   val daysOfWeek = arrayOfNulls<String>(7)
   val calendar = Calendar.getInstance()
   calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
   calendar.set(Calendar.WEEK_OF_MONTH, currentWeek)
   for (i in 0..6) {
      daysOfWeek[i] = changeDateFormat(LocalDate(calendar.time))
      calendar.add(Calendar.DAY_OF_MONTH, 1)
  }
  return daysOfWeek
}
    //initialize Calendar
    Calendar c = Calendar.getInstance();
    
    //get current week number
    int currentWeekNumber = c.get(Calendar.WEEK_OF_YEAR);
    
    //decrement week number by 1 for the previous week
    c.set(Calendar.WEEK_OF_YEAR, currentWeekNumber - 1);

    //increment week number by 1 for the next week
    //c.set(Calendar.WEEK_OF_YEAR, currentWeekNumber + 1);        

    //set first day of week
    c.set(Calendar.DAY_OF_WEEK, 1);
    
    //get start date of previous week
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    String startDate = df.format(c.getTime());
    
    //set last day of week
    c.set(Calendar.DAY_OF_WEEK, 7);
    
    //get end date of previous week
    String endDate = df.format(c.getTime());

    Log.d("LOG_TAG", "Start Date = " + startDate);
    Log.d("LOG_TAG", "End Date = " + endDate);