代码之家  ›  专栏  ›  技术社区  ›  Dimon

从日期开始计时

  •  0
  • Dimon  · 技术社区  · 6 年前

    我想做一个计时器从日期开始计时, 所以每次我启动应用程序,计时器都会被更新 例如,如果我在20:00 22/11/18启动计时器,明天21:00它将显示25:00:00。

    我只知道如何做倒计时,或只是一个简单的计时器。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Quinn    6 年前

    启动计时器时,可以通过以下方式获取当前时间:

    long timerStart = System.currentTimeMillis();
    

    long timePassed = System.currentTimeMillis() - timerStart;
    

    public static String convertMillisToHMmSs(long millis) {
        long seconds = millis / 1000
        long s = seconds % 60;
        long m = (seconds / 60) % 60;
        long h = (seconds / (60 * 60));
        return String.format("%d:%02d:%02d", h,m,s);
    }
    

    编辑:如其他答案所述,您需要将timerStart存储在某个位置,以便在应用程序关闭/重新打开后跟踪它。我会推荐一些类似于共享偏好的东西 you can look at this question to figure out how to do that

        2
  •  0
  •   ralic    6 年前

    除非你愿意创建一个在后台运行几天的应用程序(对于如此复杂的应用程序来说,这是非常不优化的)

    Room 或在 Shared Preferences 不要让你的应用程序每秒增加或减少一个计数器,而不是每秒计算开始时间和当前时间戳之间的差值。

    更快 还有更多 精确的 .

        3
  •  0
  •   Adeel Malik    6 年前

    timerStart 将重置。

    因此,您需要创建一个存储“timerStart”的文件,以便每次启动时,它都会根据值进行更新。