有 Java 编程相关的问题?

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

java在JodaTime中生成日期范围

我需要检查数组列表中是否存在日期(字符串)

我有两个日期,首先我需要在这两个日期之间生成日期范围,并将它们存储在一个数组中。这就是我正在做的

DateTimeFormatter dateFromatter= DateTimeFormat.forPattern("MM/dd/yyyy");

DateTime startDate= formatter.parseDateTime("01/02/2012");
DateTime endDate= formatter.parseDateTime("01/31/2012");

 List<LocalDate> dates = new ArrayList<LocalDate>();


  int days = Days.daysBetween(startDate, endDate).getDays();
  for (int i=0; i < days; i++) {

这就是我遇到问题的地方

Type mismatch: cannot convert from DateTime to LocalDate

>   LocalDate listOfDates =
> startDate.withFieldAdded(DurationFieldType.days(), i);
> dates.add(listOfDates);

  }

共 (3) 个答案

  1. # 1 楼答案

    我来这里是为了这个,但两种解决方案都不为我所接受——我最终得到了以下结果:

    int days = Days.daysBetween(startDate, endDate).getDays();
    
    for(int i = 0; i <= days; i++) {
        dates.add(startDate.plusDays(i));
    }
    

    请记住,LocalDates是不可变的,所以在调用plusDays(…)时实际上并没有更改它。还请注意,我使用<;=包括最后一天(在您的示例中,这将是1月31日)

  2. # 2 楼答案

    使用组织。乔达。时间间歇

    Interval interval = new Interval(startDate, endDate);  
    for (LocalDate date : dates)  
    {   
      if (interval.contains(date))  
       // 
    
  3. # 3 楼答案

    {a1}不起作用吗

    LocalDate listOfDates = 
        startDate.withFieldAdded(DurationFieldType.days(), i).toLocalDate();
    

    不管怎样,您真的需要生成每个日期吗?除非我真的需要,否则我会做类似的事情:

    Interval interval = new Interval(startDate.withTimeAsStartOfDay(), 
                                     endDate.withTimeAsStartOfDay().plusDays(1));
    boolean isInInterval = interval.contains(date.withTimeAsStartOfDay());