当前位置: 首页 > 知识库问答 >
问题:

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

匡翰
2023-03-14

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

2017年5月6日星期一至2017年11月6日星期日

2017年6月6日星期二-2017年11月6日星期日

星期三7/6/2017-星期日11/6/2017

2017年6月8日星期四-2017年6月11日星期日

2017年6月9日星期五-2017年6月11日星期日

2017年6月10日星期六-2017年6月11日星期日

星期日11/6/2017-星期日11/6/2017

2017年6月12日星期一至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个答案

谭翰海
2023-03-14

你做的几乎都是对的。你正确地设置和获取日期,然而,你是在同一日期通过这一行来完成的(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实例来获取sunday,但继续在mCalendar上添加1。您可能会找到更好的方法来创建日历实例,但很少进行更改,例如保持事物处于正确状态:

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

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

然后在这个新日历实例中设置星期天日期并使用它,而不是使用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()));

    }
}
 类似资料:
  • 问题内容: 让我解释一下自己。通过知道日期的星期数和年份: 但是现在我不知道如何获取该周第一天的日期。我一直在寻找Calendar,Date,DateFormat,但没有什么可能有用的… 有什么建议吗?(使用Java) 问题答案: 这些字段不返回值。这些是 常量,标识可以获取/设置/添加的对象中的字段。要实现所需的功能,您首先需要获取一个,将其清除并设置已知值。它将自动将日期设置为该周的第一天。

  • 问题内容: 换句话说,我想要提供Joda-Time的功能: 但没有Joda-Time,只有java.util.Date。 不推荐使用.setHours()等方法。有没有更正确的方法? 问题答案: 由于不推荐使用这些方法,因此您可以使用: 如果最终需要一个对象,只需调用

  • 问题内容: 我应该如何获取应该在31天之前? 问题答案: 只需减去31天。例如: 要 获取 当前日期,可以使用: 要么 或者,您可能想要创建自己的“时钟”表示形式,该表示形式能够为您提供current ,在这种情况下,您将使用: (这使您可以使用依赖项注入使用伪造的时钟编写更简单的单元测试。)

  • 问题内容: 如何使用Joda-Time API 获得下一个星期五。 在今天的是。在我看来,您必须决定本周星期五之前还是之后。请参阅此方法: 是否可以缩短时间或使用单缸衬套? PS:请不要建议我使用JDK的日期/时间。 Joda-Time是一个更好的API。 Java 8引入了更好的java.time包(Tutorial)。 问题答案: 随着java.time内置到Java 8及更高版本(框架教程)

  • 问题内容: 我想找出以下内容:给定日期(对象),星期几是几号? 例如,星期日是第一天,星期一:第二天..依此类推 然后,如果输入的内容类似于今天的日期。 例 输出可能是6(因为它是星期五) 问题答案: 使用: 从文档中: 以整数返回星期几,其中星期一为0,星期日为6。

  • 问题内容: 在Joda-Time中,有一种方法可以获取一周中第一天(星期一)的日期。 例如,我想根据今天的当前日期11/1/21找出本周的星期一是几号 提前加油。 编辑:我也希望找到一周结束的日期,即星期日的日期。干杯 问题答案: 试试LocalDate.withDayOfWeek: