我在android中获得一天的问题。在我的活动中,我有一个按钮,当我点击此按钮时,我的当前日期将增加到1天,最后一天是星期日。 如果我点击按钮,直到当天增加到下一周,最后一天将是下一周的下一个星期日。当我第一次点击时,我的代码正常工作,当我再次点击我的按钮时,我的当前日期长达7天,我做了研究,但没有找到预期的结果。希望你能帮忙。 像这样的例子: 每次按下按钮:
星期一5/6/2017 - 星期日11/6/2017
星期二6/6/2017 - 星期日11/6/2017
星期三7/6/2017 - 星期日11/6/2017
星期四8/6/2017 - 星期日11/6/2017
星期五9/6/2017 - 星期日11/6/2017
星期六10/6/2017 - 星期日11/6/2017
SUNDAY 11/6/2017 - SUNDAY 11/6/2017
星期一12/6/2017 - 星期日18/6/2017
星期二13/6/2017 - 星期日18/6/2017
........
这是我的代码: 提前谢谢。
btnChooseDay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
mCalendar.add(Calendar.DAY_OF_WEEK, 1);
tvDayChoose.setText(getNameOfDay(mCalendar.get(Calendar.DAY_OF_WEEK)) + ", " + mSimpleDateFormat.format(mCalendar.getTime()));
mCalendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY );
tvDayChoose.append(" - " + mSimpleDateFormat.format(mCalendar.getTime()));
}
});
答案 0 :(得分:1)
你几乎做的一切都是正确的。您正确设置和获取日期,但是,您在同一日期通过此行(mCalendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY );
执行此操作。结果,您将进入循环。
可以说今天是6月5日(星期一),所以当你第一次加1时,就会变成6月6日(星期二),所以你的星期日是6月4日,你回到了你的约会对象。现在,你将mCalendar设置为6月4日,当你再次点击时,你加1并且它变成6月5日,你的星期日再次变成6月4日,然后你再次将它设置为你的mCalendar,这将它设置为6月4日。不断重复。因此,您的解决方案是使用new Calendar instance
获取星期日,但继续在mCalendar
上添加1。您可能会找到更好的方法来创建日历实例,但只需进行一些更改,例如保持适当的状态:
在mCalendar
上添加1,
Calendar sundayCalendar=Calendar.getInstance();
sundayCalendar.setTime(mCalendar.getTime());
然后在此new Calendar instance
中设置星期日日期并使用它,而不是使用mCalenar
。现在,您的mCalendar
会保持增量状态,sundayCalendar
会根据mCalendar
返回您的星期日,每次点击都会增加1。
sundayCalendar.set(Calendar.DAY_OF_WEEK, mCalendar.get(Calendar.SUNDAY));
tvDayChoose.append(" - " + mSimpleDateFormat.format(sundayCalendar.getTime()));
显示用法的简单类如下:
public class DateSunday {
static Calendar mCalendar= Calendar.getInstance();
public static void main(String[] args){
for(int i=0;i<10;i++){
onClick();
}
}
public static void onClick(){
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
mCalendar.add(Calendar.DAY_OF_WEEK, 1);
Calendar sundayCalendar=Calendar.getInstance();
sundayCalendar.setTime(mCalendar.getTime());
sundayCalendar.set(Calendar.DAY_OF_WEEK, mCalendar.get(Calendar.SUNDAY));
System.out.println(" - " + mSimpleDateFormat.format(sundayCalendar.getTime()));
}
}