2012-05-23 253 views
2

如何获取上一周日期(星期六)特定日期的日期。意味着如果我给输入作为06-04-2012获取给定日期的最后一天(日期)

(MM-DD-YYYY)

输出应该06-09-2012this calendar看到。

+0

[从提供日期获取第一个星期几]可能的副本(http://stackoverflow.com/questions/1036613/get-first-date-of-week-from-provided-date) –

+0

@ThorbjørnRavnAndersenThe Question你链接的是JavaScript,而不是Java。所以,不是重复的。 –

回答

7
Calendar cal = Calendar.getInstance(); 
int currentDay = cal.get(Calendar.DAY_OF_WEEK); 
int leftDays= Calendar.SATURDAY - currentDay; 
cal.add(Calendar.DATE, leftDays); 

+0

如果当天是星期六,则会按原样返回。 –

+0

不幸的是,这只适用于星期日 - 坐骑cals ...星期一从星期一开始的时候,其他地区的情况如何?一个通用解决方案 – jacoballenwood

0

看无论是JODA时间或(如果你不能添加新库)Calendar类。

0
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; 
} 
2

TL;博士

LocalDate.parse( 
    "06-04-2012" , 
    DateTimeFormatter.ofPattern("MM-dd-uuuu") 
).with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY)) 
.format(DateTimeFormatter.ofPattern("MM-dd-uuuu") ) 

使用java.time

现代化的方法是用java.time类。

第一个parse您的输入字符串为LocalDate

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.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,YearQuartermore

相关问题