有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jodatime在jodatime中获取特定周的第一天?JAVA

Joda-Time中,是否有方法获取一周的第一天(星期一)的日期

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

提前欢呼

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


共 (5) 个答案

  1. # 1 楼答案

    您可以使用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
            }
        }
    
  2. # 2 楼答案

    LocalDate today = new LocalDate();
    LocalDate weekStart = today.dayOfWeek().withMinimumValue();
    LocalDate weekEnd = today.dayOfWeek().withMaximumValue();
    

    将为您提供第一天和最后一天,即周一和周日

  3. # 3 楼答案

    另一种选择是使用roundFloorCopy。如下所示:

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

    the standard week的最后一天(星期日)使用roundCeilingCopyminusDays

    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
    
  4. # 5 楼答案

    试试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