获得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:
- find目标date的星期几(2011年1月21日)
- 确定这是星期一前几天
- 使用
dateTime.minusDays(n)
从目标date中减去#2的值