【问题标题】:java calculate time between two timestampsjava计算两个时间戳之间的时间
【发布时间】:2011-09-04 21:22:21
【问题描述】:

我需要计算两个日期之间经过的时间。

这里要注意的是,我需要像 YouTube 那样使用它的视频 cmets 时间戳来展示它。也就是说,仅通过最大的度量来显示它。

例如,

  • 如果时间是 50 秒前,则应该是 50 秒前。
  • 如果时间超过一分钟,则应显示一分钟前/十分钟前等。
  • 如果时差为 1 小时 30 分钟,则应显示:一小时前。
  • 如果时间是一周半而不是一周前。
  • 如果时间超过一个月,则应该说一个月前/两个月前等...
  • 等等等等..

那么处理这个问题的最佳方法是什么? 我应该使用case 或if 语句创建一个返回类似内容的方法吗?还是有更好的方法(也许是已经做了类似事情的库)?

【问题讨论】:

    标签: java android time timestamp date-arithmetic


    【解决方案1】:

    使用DateUtils.getRelativeTimeSpanString(long time, long now, long minResolution)。 time 是开始时间,now 是结束时间(以毫秒为单位)。要报告“秒前”,请将 minResolution 设置为零。

    例子:

    String result = DateUtils.getRelativeTimeSpanString(1306767830, 1306767835, 0);
    // result = "5 seconds ago"
    

    【讨论】:

    • 完美答案,但返回类型是 CharSequence,而不是 String。因此,要么将 result 类型更改为 CharSequence,要么对其进行类型转换。
    • 如何获取两个时间戳之间的天数?
    • 完美答案!
    【解决方案2】:
     date1.getTime() - date2.getTime() 
    

    这将返回两个日期之间的时间(以毫秒为单位)。只需将其转换为您想要显示的内容(例如小时分钟秒)

    【讨论】:

    • 好的,我知道该怎么做......这让我的时间以毫秒为单位,而不是我想要创建它的格式......我的问题是关于如何继续获得描述的结果在我的问题中。什么是正确/最简单的方法...
    【解决方案3】:
    【解决方案4】:

    看看PrettyTime!

    此外,每次你想在 Java 中做一些与日期/时间相关的事情时,你应该看看Joda Time。现在就做吧,以后你会感谢我的。

    【讨论】:

      【解决方案5】:

      您的需求非常具体,我不知道任何可以立即为您解决问题的库。 然而,这个问题并不是很复杂,一个充满“ifs”的小函数应该可以解决问题。 当然,像 Joda Time 这样的好日期库将帮助您保持代码整洁。谁想使用公历!?

      【讨论】:

        【解决方案6】:

        看起来您有一组自定义规则,并且选择规则的算法基于两个时间戳之间的时间(以秒为单位)。最简单的方法是在一系列 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
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-26
          • 2020-05-13
          相关资源
          最近更新 更多