许多应用程序支持人类可读的间隔,如20d, 1y, 2m1d等
是否有一个既定的最佳实践来解析这些?经验告诉我们,由于我们古怪的日历就是这样,时间分析通常会给粗心的旅行者带来很多陷阱。
java.time
使用java。time类内置于Java 8及以后版本中。它们取代了糟糕的遗留日期时间类。
Period
在这些类中有Period
,它表示一段时间,不附加在以年、月、日为单位的时间轴上。
PnYnMnDTnHnMnS
。P
标记是开始,T
分隔年、月、日和时、分、秒。
String input = "P2M1D" ;
Period p = Period.parse( input ) ;
如果你有非标准的输入,如20d
,你可以做一些简单的字符串操作来符合标准。
String input = "20d" ;
String modified = "P" + input.toUpperCase() ;
Period p = Period.parse( modified ) ;
ThreeTen-Extra
要表示附加到时间轴上的时间跨度,请将ThreeTen-Extra库添加到项目中。使用它的LocalDateRange
类来表示一对LocalDate
对象,以及方便的比较方法,如contains
、abuts
等。