【问题标题】:How to Get Sunday of any day如何获得任何一天的星期天
【发布时间】:2023-04-11 03:41:01
【问题描述】:

我在 android 中遇到了 get day 问题。在我的活动中,我有一个按钮,当我点击此按钮时,我的当前日期将增加到 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 年 6 月 13 日星期二 - 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()));
                }
            });

【问题讨论】:

  • 您的意思是,将日期增加到当前日期后一周的星期日?我在这里很困惑
  • 将开始日期增加到 1 天,结束日期是一周中的星期日,谢谢您的回答

标签: java android


【解决方案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()));

    }
}

【讨论】:

  • 它对我很有效,谢谢你拯救了我的一天。
猜你喜欢
  • 2019-10-19
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多