【问题标题】:Turn ISO 8601 date/time into "x minutes ago" type of string将 ISO 8601 日期/时间转换为“x 分钟前”类型的字符串
【发布时间】:2011-05-26 00:32:10
【问题描述】:

所以我有一个 ISO 8601 日期/时间戳,如“2011-04-21T17:07:50-07:00”,我想将其转换为“23 分钟前”之类的内容种类。是否有少量的 Java 代码或库可以轻松完成类似的操作?

谢谢!

【问题讨论】:

    标签: java


    【解决方案1】:

    您正在寻找的是模糊时间。关于这个词的快速谷歌找到了jFuzzyDate

    【讨论】:

    • 从来没有听说过这个。很棒的发现!
    • 这就是我给出这个词而不仅仅是链接的原因; jFuzzyDate 可能是第一个命中,但不一定是最好的;也可以找到一些算法。
    【解决方案2】:

    首先,将其解析为 Date 对象。然后,创建一个具有当前日期/时间的新日期。然后,对两个 Date 对象调用 .getTime() 方法,然后减去。现在您的时间以毫秒为单位。

    您可以从那里进行自己的数学运算,因为在您开始担心闰年之前,除法都很容易。

    【讨论】:

    • 闰年评论是怎么回事?除了闰秒和 18 世纪和 19 世纪的日历调整等晦涩难懂的事情之外,您的方法几乎适用于所有情况。
    • 不正确。如果您将“年”计算为“天 / 365”,那么千禧年就会出现一些错误。
    • 好吧,您可能在 29~30 天左右就开始遇到问题,因为您不想每个月每 30 天任意打电话.. .
    • 当您谈论模糊日期时,一点错误是无关紧要的。当你说一个月前发生的事情时,你真的是指恰好上个月的这一天吗?我不这么认为。计算可以在这个答案中找到:stackoverflow.com/questions/1570752/…
    【解决方案3】:

    Joda 是一个很棒的时间库,应该有你需要的所有方法:http://joda-time.sourceforge.net/。

    【讨论】:

    • 我没有,但图书馆应该有足够的方法来滚动你自己的模糊日期。我喜欢@lacqui 提到的 jFuzzyDate 库(或类似的库)。
    猜你喜欢
    • 2019-02-27
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多