如何获取上一周日期(星期六)特定日期的日期。意味着如果我给输入作为06-04-2012
获取给定日期的最后一天(日期)
(MM-DD-YYYY)
输出应该06-09-2012
如this calendar看到。
如何获取上一周日期(星期六)特定日期的日期。意味着如果我给输入作为06-04-2012
获取给定日期的最后一天(日期)
(MM-DD-YYYY)
输出应该06-09-2012
如this calendar看到。
Calendar cal = Calendar.getInstance();
int currentDay = cal.get(Calendar.DAY_OF_WEEK);
int leftDays= Calendar.SATURDAY - currentDay;
cal.add(Calendar.DATE, leftDays);
见
如果当天是星期六,则会按原样返回。 –
不幸的是,这只适用于星期日 - 坐骑cals ...星期一从星期一开始的时候,其他地区的情况如何?一个通用解决方案 – jacoballenwood
看无论是JODA时间或(如果你不能添加新库)Calendar类。
public Calendar lastDayOfWeek(Calendar calendar){
Calendar cal = (Calendar) calendar.clone();
int day = cal.get(Calendar.DAY_OF_YEAR);
while(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY){
cal.set(Calendar.DAY_OF_YEAR, ++day);
}
return cal;
}
LocalDate.parse(
"06-04-2012" ,
DateTimeFormatter.ofPattern("MM-dd-uuuu")
).with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY))
.format(DateTimeFormatter.ofPattern("MM-dd-uuuu") )
现代化的方法是用java.time类。
DateTimeFormatter f = DateTimeFormatter.ofPattern("MM-dd-uuuu");
LocalDate ld = LocalDate.parse("06-04-2012" , f);
ld.toString():2012-06-04
然后获得下周六,或使用日期本身,如果它是一个星期六。要指定星期六,请使用enum DayOfWeek.SATURDAY
。要查找下一个或同一个星期六的日期,请使用在TemporalAdjusters
(注意复数名称)类中找到的TemporaAdjuster
的实现。
LocalDate nextOrSameSaturday =
ld.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY)) ;
要生成一个字符串,我建议呼吁toString
使用标准ISO 8601格式。
String output = ld.toString();
2012-06-09
但如果你坚持,你可以使用相同的格式在分析过程中使用。
String output = ld.format(f);
06-09-2012
的java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310。
从何处获取java.time类?
的ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
[从提供日期获取第一个星期几]可能的副本(http://stackoverflow.com/questions/1036613/get-first-date-of-week-from-provided-date) –
@ThorbjørnRavnAndersenThe Question你链接的是JavaScript,而不是Java。所以,不是重复的。 –