【问题标题】:Find difference between two timestamps [closed]查找两个时间戳之间的差异[关闭]
【发布时间】:2017-12-21 22:01:58
【问题描述】:

我想找出给定时间戳和当前系统时间之间的差异。

我的代码,

Long timeStamp=1500462813;  
long diff=(timeStamp*1000L) - System.currentTimeMillis();

我得到的差异不是我想要的。

例如。 (1500462813*1000)-1500290013000=172800000

这是 1975 年 6 月 24 日上午 5:30:00 的日期 我期待 2017 年 7 月 19 日下午 4:43:33。

想要找出当前系统时间和给定时间戳之间的差异,以运行剩余时间的计时器。

【问题讨论】:

  • 你得到了什么,你期望什么?
  • 两个时间戳之间的差异不是日期。这是……不同。
  • @RahulDevanavar 首先,您应该告诉我们您所说的“时间戳差异”是什么意思。两个时间戳之间的差异与未来的日期有何关系?
  • 为什么要转换为日期?这是一个持续时间,而不是一个时间点,因此如果它无效,那将是有意义的。您将如何使用带有计时器的日期?为什么不直接使用生成的long
  • @RahulDevanavar:同样:两个时间戳之间的差异不是日期。 它永远不会是一个日期。这两个时间戳之间的差异是 172800000 毫秒。如果在您的脑海中这些毫秒与日期有关,那么请告诉我们如何。因为我们不知道您有什么想法可以以某种方式将毫秒差转换为日期(将来也不会更少)。

标签: java date time


【解决方案1】:

试试:

long diff= System.currentTimeMillis() - givenTimeStamp;

【讨论】:

  • 一个解释会很好。你怎么知道这真的回答了这个问题?
  • @TimBiegeleisen 你还是不明白的问题
【解决方案2】:

我认为你应该像这样找到不同之处

long timeStamp=System.currentTimeMillis();  
long diff=(timeStamp-1500462813000);

System.currentTimeMillis() 将永远大于你当前的

【讨论】:

    【解决方案3】:

    首先我看到您使用的是基本类型long 和类Long。这不是一个好主意。如果您没有真正充分的理由使用该课程,则最好使用long

    您正在使用整数初始化类Long

    Long timeStamp=1500462813;
    

    这实际上是一个编译器错误。所以你的代码无法编译。

    如果我理解正确你的问题,你想要一个日期的剩余时间。你实际上得到了它。以毫秒为单位。您的结果是您的时间戳日期的剩余时间。

    这个结果本身并不是Date。这只是您想要的日期的毫秒数。

    【讨论】:

    • 如何找到日期
    • 你想得到什么日期?你想要区别。你拥有了它。不能将差异解释为日期。
    • 也许你可以解释更多关于你的问题。把你想做的事写给我们,目的。据我了解,您所做的一切都是正确的。你只是不明白你得到了什么。
    • 请阅读一些关于提问的建议。你问得很不好。我们应该可以理解问题是什么。提供更多信息,你做了什么,什么没用,你想要什么。尽可能精确(但没有无用的信息)。提问本身就是一种文化。
    • 是的,很抱歉给您带来不便。
    【解决方案4】:

    试试这个方法:

    public static long getDateDiff(long timeUpdate, long timeNow, TimeUnit timeUnit)
    {
        long diffInMillies = Math.abs(timeNow - timeUpdate);
        return timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS);
    }
    

    它为您提供任何单位的差异(天、年、...)。

    long timestamp1 = 1500462813000;
    long timestamp2 = System.currentTimeMillis();
    long diffInDays = getDateDiff(timestamp1, timestamp2, TimeUnit.DAYS);
    

    【讨论】:

    • 这个答案使用了麻烦的旧日期时间类,这些类现在是遗留的,被 java.time 类所取代。
    • 你是对的 - 我编辑了我的答案 - 它也可以在没有日期的情况下工作。只需要时间戳。
    猜你喜欢
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2020-05-13
    相关资源
    最近更新 更多