我需要计算两个日期之间的时间。
这里的问题是,我需要将其显示为YouTube的视频评论时间戳。也就是说,仅通过最大的衡量标准来显示它。
例如,
那么处理这个问题的最佳方法是什么?
我应该使用case
或if
语句创建一个返回类似内容的方法吗?或者是否有更好的方法(也许是一个已经做过类似工作的库)?
答案 0 :(得分:40)
使用DateUtils.getRelativeTimeSpanString(long time, long now, long minResolution)。 time
是开始时间,now
是结束时间(以毫秒为单位)。要报告“秒前”,请将minResolution设置为零。
示例:
String result = DateUtils.getRelativeTimeSpanString(1306767830, 1306767835, 0);
// result = "5 seconds ago"
答案 1 :(得分:4)
date1.getTime() - date2.getTime()
这将返回两个日期之间的时间(以毫秒为单位)。只需将其转换为您想要显示的内容(例如小时分钟秒)
答案 2 :(得分:3)
答案 3 :(得分:2)
看看PrettyTime!
此外,每当您想要在Java中执行与日期/时间相关的操作时,您应该查看Joda Time。现在就做,你以后会感谢我。
答案 4 :(得分:0)
您的需求非常具体,我不知道任何可以解决问题的库。 然而问题并不是很复杂,一个充满“ifs”的小功能应该可以解决问题。 当然,像Joda Time这样的好日期库可以帮助您保持代码清洁。谁想使用GregorianCalendar!?
答案 5 :(得分:-1)
看起来您有一组自定义规则,选择规则的算法基于两个时间戳之间的时间(以秒为单位)。最简单的方法是在一系列if / else if语句中处理规则:
private String getTimeAsString(int seconds) {
if (seconds < 60) { // rule 1
return String.format("%s seconds ago", seconds);
} else if (seconds < 3600) { // rule 2
return String.format("%s minutes ago", seconds/60);
} // ... and so on
}