【问题标题】:Java currentTimeMillis() conversion to seconds not working?Java currentTimeMillis() 转换为秒不起作用?
【发布时间】:2015-02-06 14:33:11
【问题描述】:

我正在尝试使用 System.currentTimeMillis(); 将毫秒转换为秒;

System.out.println((int) System.currentTimeMillis() / 1000);

输出为 730750 并增加 1。如何从 0 开始获得秒数?

**更新:现在我明白了这个问题,感谢您的回答。

【问题讨论】:

  • 定义“从0”;在这种情况下,零是什么意思?例如,您是否尝试确定经过的时间?
  • 我不确定您要做什么,但投射到 int 绝对是个问题。您在除法之前截断了很长时间,这为您提供了一个对于您可能提出的任何问题都不正确的数字。此外,System.out.println() 对所有原始类型都进行了重载。

标签: java time milliseconds seconds


【解决方案1】:

System.currentTimeMillis() 来自 1970 年 1 月 1 日。它需要今天的时间并从 1970 年 1 月 1 日午夜减去它。这就是为什么它有这么多秒。

【讨论】:

    【解决方案2】:

    由于时间是以 1.1.1970 纪元为基准的,因此需要以当前时间为基准。

    long start = System.currentTimeMillis();
    System.out.println((System.currentTimeMillis() - start) / 1000l);
    

    【讨论】:

    • 好的,我现在明白了,但是我的程序在 4-5 停止计数...是因为滞后吗?
    【解决方案3】:

    来自System.currentTimeMillis()的Javadocs:

    返回: 当前时间与 UTC 时间 1970 年 1 月 1 日午夜之间的差异,以毫秒为单位。

    要从零开始,您需要定义开始时间。然后您可以打印该开始时间之后经过的时间。

    long startTime = System.currentTimeMillis();
    ...
    System.out.println((System.currentTimeMillis() - startTime) / 1000);
    

    【讨论】:

      【解决方案4】:

      如果您想要经过的时间,您可以存储开始时间,然后再检查当前时间。 例如。

      int startTimeSeconds = (int) System.currentTimeMillis() / 1000;
      // do stuff
      System.out.println("Time elapsed: ");
      System.out.println(((int) System.currentTimeMillis() / 1000) - startTimeSeconds);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-01
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 2016-05-21
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        相关资源
        最近更新 更多