我在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()));
}
});
你做的几乎都是对的。你正确地设置和获取日期,然而,你是在同一日期通过这一行来完成的(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: