gpt4 book ai didi

java - 如何获得任何一天的星期日

转载 作者:行者123 更新时间:2023-11-30 00:30:58 25 4
gpt4 key购买 nike

我对 android 中的 get day 有疑问。在我的 Activity 中,我有一个按钮,当我点击此按钮时,我的当前日期将增加到 1 天,最后一天是星期日。如果我点击按钮,直到当前日期增加到下一周之后,最后一天将是下一周的下一个星期日。当我第一次点击时,我的代码工作正常,当我再次点击我的按钮时,我的当前日期最多为 7 天,我进行了研究,但没有找到预期的结果。希望你能帮忙。像这样的例子:每次我按下按钮时:

2017 年 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 年 6 月 18 日星期日

2017 年 13 月 6 日星期二 - 2017 年 6 月 18 日星期日

........

这是我的代码:提前谢谢你。

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

最佳答案

您几乎做对了所有事情。您正确设置和获取日期,但是,您在同一日期通过此行 (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 实例 获取星期日,但在 mCalendar 上继续加 1。您可能会找到更好的方法来创建日历实例,但需要做一些更改以保持正确的状态:

mCalendar 上添加 1 后添加这两行,

Calendar sundayCalendar=Calendar.getInstance();
sundayCalendar.setTime(mCalendar.getTime());

然后在此新日历实例 中设置星期日日期并使用它,而不是使用mCalenar。现在,您的 mCalendar 保持递增状态,sundayCalendar 返回您的星期日日期,该日期基于每次点击时递增 1 的 mCalendar

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

}
}

关于java - 如何获得任何一天的星期日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44373692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com