Momentjs具有calendar()
函数,可以实现如下所示的打印时间跨度。
例如:
“上周一的1:14 PM”
“09/21/2017”(如果日期是前一阵子)
Java中是否有等效的功能(如果可能,可以使用Joda-Time)?
moment().subtract(10, 'days').calendar(); // 09/21/2017
moment().subtract(6, 'days').calendar(); // Last Monday at 1:14 PM
moment().subtract(3, 'days').calendar(); // Last Thursday at 1:14 PM
moment().subtract(1, 'days').calendar(); // Yesterday at 1:14 PM
moment().calendar(); // Today at 1:14 PM
moment().add(1, 'days').calendar(); // Tomorrow at 1:14 PM
moment().add(3, 'days').calendar(); // Wednesday at 1:14 PM
moment().add(10, 'days').calendar(); // 10/11/2017
解决方案如下:
java.time
现代方法使用行业领先的java.time类。
ZoneId z = ZoneId.now( “America/Montreal” ) ;
LocalDate today = LocalDate.now( z ) ;
使用加号和减号方法进行数学运算。
LocalDate tomorrow = today.plusDays( 1 ) ;
搜索堆栈溢出。几乎每个基本的日期时间问题都已经被要求回答。
弦乐
java.time类不会生成诸如“明天”和“上周一”之类的字符串。因此,没有直接等同于您引用的库的信息。您将不得不自己做农民工作。
搜索
DateTimeFormatter
类和
DateTimeFormatterBuilder
类。
同样,
DayOfWeek
枚举及其自动本地化
getDisplayName
方法可能会很有用。
漂亮时间
尽管我没有使用
prettytime库,但它可能会对您有所帮助。
乔达时代
Joda-Time项目处于维护模式。该团队建议迁移到java.time类。
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧
legacy日期时间类,例如
java.util.Date
,
Calendar
和
SimpleDateFormat
。
现在位于
Joda-Time中的
maintenance mode项目建议迁移到
java.time类。
要了解更多信息,请参见
Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为
JSR 310。
在哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展了java.time。该项目是将来可能向java.time添加内容的试验场。您可能会在这里找到一些有用的类,例如
Interval
,
YearWeek
,
YearQuarter
和
more。