String specificDate=2013+"-"+06+"-"+20;
String day="Monday";
如何找到星期一到来的下一个日期是那之后specificDate
?如何使用java在特定日期后发现某个特定日期的下一个日期?
String specificDate=2013+"-"+06+"-"+20;
String day="Monday";
如何找到星期一到来的下一个日期是那之后specificDate
?如何使用java在特定日期后发现某个特定日期的下一个日期?
Calendar now = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(formatString);
now.setTime(sdf.parse(dateString));
int weekday = now.get(Calendar.DAY_OF_WEEK);
if (weekday != Calendar.MONDAY)
{
int days = (Calendar.SATURDAY - weekday + 2) % 7;
now.add(Calendar.DAY_OF_YEAR, days);
}
Date monday = now.getTime();
要么你想看看Java's Calendar或JodaTime,给你看在日期规则,我建议乔达。
你应该真的使用更高级的Date库来为你做。不幸的是,构建在Date和Calendar类中的java远远不够理想。您可以看看这个库,它已经成为Java开发人员日期处理的事实标准,直到新的JDK设计完成。
您应该使用Calendar类为。
Calendar c1 = Calendar.getInstance();
c1.set(2013, Calendar.JUNE, 20);
int weekday = now.get(Calendar.DAY_OF_WEEK);
if (weekday != Calendar.MONDAY) {
// calculate how much to add
// the 2 is the difference between Saturday and Monday
int days = (Calendar.SATURDAY - weekday + 2) % 7;
now.add(Calendar.DAY_OF_YEAR, days);
}
试试这个
Calendar c = new GregorianCalendar(2013, 5, 20);
int diff = Calendar.MONDAY - c.get(Calendar.DAY_OF_WEEK);
if (diff < 0) {
diff = 7 + diff;
}
c.add(Calendar.DATE, diff);
Date monday = c.getTime();
最简单的方法与标准API做这个星期被设置为周一再前进一七
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // Sets c to this week's Monday
c.add(Calendar.DATE, 7); // Advances c to next week's Monday
注意,如果在您的文化中,每周的第一天是星期日,开始的日期是星期日,set
方法会将日期移至下一个星期一 - 而不是前一天 - 最终计算秒数在给定日期之后的星期一。如果星期一的第一天是星期一,一切都按预期工作。
对于Java 8中,您可以使用类似...
LocalDate date = LocalDate.of(2013, Month.JUNE, 20);
LocalDate nextWed2 = date.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
或...
LocalDate date = LocalDate.of(2013, Month.JUNE, 20);
LocalDate nextWed2 = date.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
如果选择日期为MONDAY
,但是你想在未来MONDAY
如演示here更详细
或者,如果你喜欢使用JodaTime ...
LocalDate date = new LocalDate(2013, DateTimeConstants.JUNE, 20);
LocalDate nextMonday = new LocalDate(date);
if (date.getDayOfWeek() >= DateTimeConstants.FRIDAY) {
nextMonday = date.plusWeeks(1);
}
nextMonday = nextMonday.withDayOfWeek(DateTimeConstants.FRIDAY);
这是基于this answer
听起来像一个家庭作业的问题。 您可以使用java.util.Calendar,然后递增它,直到您到达下一个星期一。 – dplass