如果我有一个事件的日期,例如2011-01-03,如何检测它是否在java中的这个或下周?任何示例代码?
编辑:
我认为这是一个简单的问题,结果比我想象的要复杂得多,本周我吃的是:从过去的太阳到本周六,下周是从下一个太阳到周六之后.
这在一定程度上取决于你对"本周"和"下周"的意思......但是对于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.
这个怎么样 :
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)
前两天之间的任何一天都是本周,后两天之间的任何一天都是下周。
| 归档时间: |
|
| 查看次数: |
6238 次 |
| 最近记录: |