我按如下方式格式化日期:
String inputDateString = aMessage.getString("updated_at");
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
DateTime date = fmt.parseDateTime(inputDateString);
DateTime now = new DateTime();
Period period = new Period(date, now);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendSeconds().appendSuffix(" seconds ago\n")
.printZeroNever()
.toFormatter();
String elapsed = formatter.print(period);
dateTextView.setText(elapsed);
我希望能够展示:
3 seconds ago if the period is less than 60 seconds
3 minutes ago if the period is less than 60 minutes
3 hours ago is the period is less than X hours
3 days ago if the period is less than X days
等。等
我怎样才能做到这一点?
答案 0 :(得分:3)
查看Period上可用的方法,尤其是toStandardSeconds()
等方法。使用这些可以很简单地通过一些if-else
语句来完成你所做的事情,例如
if (period.toStandardSeconds().getSeconds() < 60) {
// form second-based string
}
else if (period.toStandardMinutes().getMinutes() < 60) {
// ...
我认为PeriodFormatter
在这种情况下是一个红色的鲱鱼,因为我认为不可能构建一个符合你想要的格式化程序 - 并且在if
块中你可以只做得到秒/小时/等。直接使用与条件中相同的方法调用。
答案 1 :(得分:2)
您可以使用一系列if
语句轻松实现此目的。如果这些是您的全部要求,您甚至可以考虑取消PeriodFormatter
并直接从Period
(通过toStandardSeconds()
等)提取相关数据。
您当然可以使用period.toStandardSeconds()
等来决定使用哪种格式。