首页 文章

如何获得任何一天的星期天

提问于
浏览
1

我有一个问题,在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

星期日11/6/2017 - 星期日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 回答

  • 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 获得星期日,但继续在_2425488上添加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()));
    
        }
    }
    

相关问题