获得Joda-Time的特定一周的第一天? java的

在乔达时代 ,是否有办法得到星期一(星期一)的第一天的date。

例如,我想根据今天的当前date21/01/11找出星期一星期几

提前欢呼。

编辑:我也希望find一个星期结束的date,即星期日的date。 干杯

试试LocalDate.withDayOfWeek :

LocalDate now = new LocalDate(); System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); //prints 2011-01-17 System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); //prints 2011-01-23 
 LocalDate today = new LocalDate(); LocalDate weekStart = today.dayOfWeek().withMinimumValue(); LocalDate weekEnd = today.dayOfWeek().withMaximumValue(); 

会给你第一个和最后几天,即星期一和星期天

另一种select是使用roundFloorCopy 。 这看起来像下面这样:

 LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy(); 

对于标准周 (周日)的最后一天,请使用roundCeilingCopy和minusDay …

 LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 ); 

也适用于DateTime。 并工作周末(独家)。

 DateTime dateTime = new DateTime(); DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy(); DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy(); 

转储到控制台…

 System.out.println( "dateTime " + dateTime ); System.out.println( "startOfWeek " + startOfWeek ); System.out.println( "endOfWeek " + endOfWeek ); 

当运行…

 dateTime 2014-01-24T00:00:34.955-08:00 startOfWeek 2014-01-20T00:00:00.000-08:00 endOfWeek 2014-01-27T00:00:00.000-08:00 

你可以使用getDayOfWeek()方法,星期一返回1,星期二返回2,星期天返回7,以便返回那么多天到达星期一:

 import org.joda.time.DateTime; public class JodaTest { public static void main(String[] args) { DateTime date = new DateTime(); System.out.println(date); //2011-01-21T15:06:18.713Z System.out.println(date.minusDays(date.getDayOfWeek()-1)); //2011-01-17T15:06:18.713Z } } 

请参阅Joda-Time用户指南的“查询date时间”部分。

这里是我将遵循的一般algorithm:

  1. find目标date的星期几(2011年1月21日)
  2. 确定这是星期一前几天
  3. 使用dateTime.minusDays(n)从目标date中减去#2的值