Joda-time有一个Interval类,它是DateTime之间的范围.什么可以用于一系列的LocalDate?
我想要一个对象,例如"从2011年1月1日到10/1/2011",没有时间(或时区)进入图片.
据我所知,joda-time没有内置任何东西.如果它没有任何东西,我们创造它,它应该是什么样子?最重要的是,joda-time的哪些接口可以实现最佳集成到其他类型,与joda-time设计保持一致?它的实施ReadableInterval,地点getStart和getEnd返回DateMidnight是否有意义?
oli*_*ivr 27
我个人使用Guava 的Range类.
它支持开放式范围.也可以指定包含或排除的边界.在众多可能性中,这些可以容易地表示"在日期之前"或"在日期之后".
开放式间隔的示例.
Range<LocalDate> before2010 = Range.atMost(new LocalDate("2009-12-31"));
Range<LocalDate> alsoBefore2010 = Range.lessThan(new LocalDate("2010-01-01"));
Run Code Online (Sandbox Code Playgroud)
它还包含易于测试的谓词,例如contains和containsAll,以及交叉操作.所有这些测试和维护.
Oli*_*ann 14
的区间类表示的时间从一个毫秒时刻到另一时刻(完整的时区)的间隔.DateMidnight就是这样一个瞬间.所以你建议实现DateMidnights的间隔已经存在.
Interval i = new Interval(
new DateMidnight(2010, 3, 2), new DateMidnight(2010, 3, 5));
i.contains(new DateTime(2010, 3, 1, 23, 59, 59, 999)); // == false
i.contains(new DateTime(2010, 3, 2, 0, 0, 0, 0)); // == true
i.contains(new DateTime(2010, 3, 4, 23, 59, 59, 999)); // == true
i.contains(new DateTime(2010, 3, 5, 0, 0, 0, 0)); // == false
Run Code Online (Sandbox Code Playgroud)
但是,您搜索的LocalDates间隔(也称为部分(无时区))的概念尚不存在.如果您要自己实现它,请不要实现任何间隔接口.它会干扰你的愿望,因为如前所述,它是基于瞬间的.
编辑:糟糕,以前误解了.
不,我知道Joda Time没有任何等价物.
就个人而言,我只想创建自己的类,其中包括开始日期和结束日期:LocalDateInterval或类似的东西.我不会重复使用Interval它,因为它会混淆概念:一对LocalDate值不代表两个瞬间,因为本地日期不是真正的瞬间.
我个人认为Interval在Joda Time中没有特别有用......我一直在考虑从Noda Time中删除它.现在听起来我不应该;)
| 归档时间: |
|
| 查看次数: |
18497 次 |
| 最近记录: |