如何获取任何一天的星期日

时间:2017-06-05 16:45:07

标签: java android

我在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()));
                }
            });

1 个答案:

答案 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()));

    }
}