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

jon*_*ney 39 java jodatime

在Joda-Time,有没有办法获得一周的第一天(星期一)的日期.

例如,我想根据今天的当前日期21/01/11找出这个星期一星期一的日期

提前干杯.

编辑:我也希望找到一周结束的日期,即星期日的日期.干杯

dog*_*ane 75

尝试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
Run Code Online (Sandbox Code Playgroud)

  • 对于星期日或星期六开始一周的国家,可能不适用 (3认同)

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)


dim*_*sli 5

您可以使用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)