java - 尝试获取两个时间戳,减去它们,将差值转换为秒并存储在 int 变量中

标签 java android timestamp

我无法理解获取时间戳、减去它们以及在未来的计算中分配和使用差异。我在 Android Studio 中使用 Java。

当我使用 SimpleDateFormatCalendar 时,我能够以 HH:mm:ss 格式获取当前时间,但我不知道如何将其中两个时间戳相减并将差值转换为秒。我的最终目标是获取差异,将其转换为秒,将其分配给 int,然后将该值与其他预定值进行比较。这是 Android Studio 中的一个项目,因此我已经设置了用于获取时间戳的按钮。

示例:
- 获取当前时间戳,例如 16:50:32
- 获取不久的将来的第二个时间戳,例如 16:53:29(大约三分钟后)
- 减去这两个时间戳并以秒为单位存储该值,因此最终值将是 177(秒)
- 将值 177 放在变量中,以便我可以用它做更多事情。

我可以使用以下代码来获取时间戳

Calendar calendar = Calendar.getInstance();
SimpleDateFormat startTime = new SimpleDateFormat("HH:mm:ss");
timeTest = startTime.format(calendar.getTime());

SimpleDateFormat endTime = new SimpleDateFormat("HH:mm:ss");
timeTest2 = endTime.format(calendar.getTime());

但是在获得两个时间戳后,我不知道如何减去它们,将它们转换为秒并将它们存储在 int 值中。

最佳答案

您使用的是 Java 8 吗?

如果是这样,您可以转换为 Instant 并获取它们之间的Duration:

    Calendar cal = ...
    Calendar cal2 = ...
    Instant instantOne = cal.toInstant();
    Instant instanceTwo = cal2.toInstant();
    Duration between = Duration.between(instantOne, instanceTwo);
    long seconds = between.getSeconds();

我认为您使用 Calendar 是有原因的(它在您无法控制的情况下传递给您?)...如果没有,那么您可以使用 Instant.now () 从一开始就删除了 Java 8 之前的日期/时间类

关于java - 尝试获取两个时间戳,减去它们,将差值转换为秒并存储在 int 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60424058/

相关文章:

java - 初始化@EJB字段

sql - 如何更新 postgres 中时间戳字段的一部分?

SQLite 时间戳字段 - 转换为日期时间

android - 这个 React-Native 方法示例中的类 "Promise"应该来自哪里?

mysql - 在服务器上转换时间戳在 PHP 和 MySQL 中给出不同的结果

java - 通过 Intent 获取数据并将其显示在 ListView 中时,应用程序停止

java - Web 应用程序的交互式图表

java - 在 CMD 中运行 Java 程序时遇到问题

android - 无法在模拟器中启动 AVD。 sh : grep: command not found

android - 从 POEditor 更新 Android 字符串(Gradle 路径错误)