如何在java中检测日期是在本周还是下周?

Fra*_*ank 7 java date

如果我有一个事件的日期,例如2011-01-03,如何检测它是否在java中的这个或下周?任何示例代码?

编辑:

我认为这是一个简单的问题,结果比我想象的要复杂得多,本周我吃的是:从过去的太阳到本周六,下周是从下一个太阳到周六之后.

Jon*_*eet 7

这在一定程度上取决于你对"本周"和"下周"的意思......但是对于Joda Time来说,很容易发现它是在"今天还是未来7天",因为它是:

LocalDate event = getDateFromSomewhere();
LocalDate today = new LocalDate();
LocalDate weekToday = today.plusWeeks(1);
LocalDate fortnightToday = weekToday.plusWeeks(1);

if (today.compareTo(event) <= 0 && event.compareTo(weekToday) < 0)
{
    // It's within the next 7 days
}
else if (weekToday.compareTo(event) <= 0 && event.compareTo(fornightToday) < 0)
{
    // It's next week
}
Run Code Online (Sandbox Code Playgroud)

编辑:要获得星期日到星期六的周,你可能想要:

LocalDate startOfWeek = new LocalDate().withDayOfWeek(DateTimeConstants.SUNDAY);
Run Code Online (Sandbox Code Playgroud)

然后执行与上面相同的代码,但相对于startOfWeek.


Fra*_*ank 2

这个怎么样 :

Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
DateFormat df=new SimpleDateFormat("EEE yyyy/MM/dd HH:mm:ss");
System.out.println(df.format(c.getTime()));      // This past Sunday [ May include today ]
c.add(Calendar.DATE,7);
System.out.println(df.format(c.getTime()));      // Next Sunday
c.add(Calendar.DATE,7);
System.out.println(df.format(c.getTime()));      // Sunday after next
Run Code Online (Sandbox Code Playgroud)

结果 :

Sun 2010/12/26 00:00:00
Sun 2011/01/02 00:00:00
Sun 2011/01/09 00:00:00
Run Code Online (Sandbox Code Playgroud)

前两天之间的任何一天都是本周,后两天之间的任何一天都是下周。