在JodaTime中生成日期范围
我需要检查数组列表中是否存在日期(字符串)。
我有两个日期,首先我需要在这两个日期之间生成日期范围并将它们存储在一个数组中。 这就是我在做的事情。
DateTimeFormatter dateFromatter= DateTimeFormat.forPattern("MM/dd/yyyy"); DateTime startDate= formatter.parseDateTime("01/02/2012"); DateTime endDate= formatter.parseDateTime("01/31/2012"); List dates = new ArrayList(); 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); }
使用org.joda.time.Interval
Interval interval = new Interval(startDate, endDate); for (LocalDate date : dates) { if (interval.contains(date)) //
toLocalDate()
工作吗?
LocalDate listOfDates = startDate.withFieldAdded(DurationFieldType.days(), i).toLocalDate();
无论如何,你真的需要生成每个日期吗? 除非我真的需要,否则我会做类似的事情:
Interval interval = new Interval(startDate.withTimeAsStartOfDay(), endDate.withTimeAsStartOfDay().plusDays(1)); boolean isInInterval = interval.contains(date.withTimeAsStartOfDay());
我来到这里寻找这个,但我都不接受任何解决方案 – 我最终得到了以下内容:
int days = Days.daysBetween(startDate, endDate).getDays(); for(int i = 0; i <= days; i++) { dates.add(startDate.plusDays(i)); }
请记住,LocalDates是不可变的,所以当你调用plusDays(...)时你实际上并没有改变它。 另请注意,我使用<=来包括最后一天(在您的示例中,这将是1月31日)。
- 线程优先级和线程准确性
- Java:如何防止EntityResolver中的’systemId’#resolveEntity(String publicId,String systemId)从绝对化到当前工作目录
- JPA查询中的联合 – 来自同一个表
- 确保已成功部署服务,并且服务器已运行
- Control ExecutorService每秒最多执行N个任务
- 可以在子类中重写超类中的私有方法吗?
- 摆脱无法转换为String的org.eclipse.osgi.internal.framework.EquinoxConfiguration $ 1
- 带有2个事务管理器的@EnableTransactionManagement注释
- LDAP:如何使用连接详细信息validation用户身份
- 将Selenium与Mozilla的GeckoDriver一起使用时,找不到CircularOutputStream类exception
- 在notifyAll()之前未被线程锁定的同步对象