如何在爪哇过去的星期天和即将到来的星期天?

Fra*_*ank 13 java date

我问如何在Java中检测日期是在本周还是下周?但答案令人困惑,所以现在我想如果我能找到过去的星期天和即将到来的星期日,那么这一周中的任何一天都是本周,而在即将到来的星期日和星期日之间的任何一天都是下周,我是否正确?

所以我的新问题是:如何在Java中过去的星期天和即将到来的星期天?

Bob*_*off 22

我以为我会为后代添加一个Java 8解决方案.

LocalDate.now().with( next( SUNDAY ) ) 
Run Code Online (Sandbox Code Playgroud)

这种方法也适用于其他时间类LocalDate.如上所述,它假定以下静态导入:

final LocalDate today = LocalDate.of(2015, 11, 20);
final LocalDate nextSunday = today.with(next(SUNDAY));
final LocalDate thisPastSunday = today.with(previous(SUNDAY));
Run Code Online (Sandbox Code Playgroud)


Fra*_*ank 16

这个怎么样 :

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)

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

  • 如果你不能使用Java 8,这个解决方案很漂亮!在Android上,我们仅限于Java 6 api! (3认同)
  • 不是最好的答案。java.util.Date 和 .Calendar 类非常糟糕,甚至 Sun/Oracle 都放弃了它们。新的 [java.time 包](http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) 现在捆绑在 Java 8 中以取代旧的类。[Joda-Time](http://www.joda.org/joda-time/) 受到 java.time 的启发,并具有一些优越的功能。 (2认同)