在Joda-Time,有没有办法获得一周的第一天(星期一)的日期.
例如,我想根据今天的当前日期21/01/11找出这个星期一星期一的日期
提前干杯.
编辑:我也希望找到一周结束的日期,即星期日的日期.干杯
dog*_*ane 75
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
Run Code Online (Sandbox Code Playgroud)
sud*_*hir 26
LocalDate today = new LocalDate();
LocalDate weekStart = today.dayOfWeek().withMinimumValue();
LocalDate weekEnd = today.dayOfWeek().withMaximumValue();
Run Code Online (Sandbox Code Playgroud)
会给你第一天和最后一天,即周一和周日
Spa*_*ker 12
另一种选择是使用roundFloorCopy.这看起来如下:
LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy();
Run Code Online (Sandbox Code Playgroud)
对于标准周(星期日)的最后一天,使用roundCeilingCopy和minusDays ...
LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 );
Run Code Online (Sandbox Code Playgroud)
也适用于DateTime.适用于周末(独家).
DateTime dateTime = new DateTime();
DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy();
DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy();
Run Code Online (Sandbox Code Playgroud)
转储到控制台......
System.out.println( "dateTime " + dateTime );
System.out.println( "startOfWeek " + startOfWeek );
System.out.println( "endOfWeek " + endOfWeek );
Run Code Online (Sandbox Code Playgroud)
跑的时候......
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
Run Code Online (Sandbox Code Playgroud)
您可以使用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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32070 次 |
| 最近记录: |