java - 计算结束时间和开始时间差(以分钟为单位)并验证在 android 中输入的时间

标签 java android

我必须计算两次之间的时间差(结束时间 - 开始时间)。时间是 hh:mm 格式,我想要整数 MINUTS 的差异? 还有一件事如何验证用户输入的时间在 1 到 24 小时之间?

最佳答案

使用此 API 将其解析为 hava LocalTime

LocalTime.parse(userInput, hhmmFormatter)

(请参阅此处的 API 文档 https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html#parse-java.lang.CharSequence-java.time.format.DateTimeFormatter-)

对两个输入执行此操作。根据文档,如果格式不匹配 hh:mm(由您的 hhmmFormatter 实例定义),此方法将抛出 DateTimeParseException,因此您可以捕获它并根据需要进行处理。

您可以使用 DateTimeFormatter.ofPattern 创建自己的 hhmmFormatter,但我建议只使用标准

 DateTimeFormatter.ISO_LOCAL_TIME

这非常适合您的情况。更多细节在这里 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_TIME

所以你可以简单地做

try {
  // NOTE: you can move these into their own try/catch so you can handle bad user input separately if you wish
  final LocalTime time1 = LocalTime.parse(userInput1, DateTimeForamatter.ISO_LOCAL_TIME);
  final LocalTime time2 = LocalTime.parse(userInput2, DateTimeForamatter.ISO_LOCAL_TIME);
  final long differenceInNanos = (time2.toNanoOfDay() - time1.toNanoOfDay());
  final long differenceInSeconds = TimeUnit.NANOSECONDS.toSeconds(differenceInNanos)
}
catch(DateTimeParseException e){
   // TODO code to handle bad user input
}

(TimeUnit 的文档 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html)

请注意,如果您想处理用户可能跨天指定时间的情况,您没有在问题中注明,因此我只向您显示 LocalTime。您可以轻松地将其转换为最一般的 ZonedDateTime 情况并执行非常相似的操作。

关于java - 计算结束时间和开始时间差(以分钟为单位)并验证在 android 中输入的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37888704/

相关文章:

java - Selenium - driver.getPageSource() 与从浏览器查看的源不同

java - Spring+JPA+MVC(无Maven)创建bean时出错

java - GWT 在文本框中显示小数

java - SCJP 线程 sleep 方法()

android - 如何创建类似 Foursquare 兴趣选择屏幕的 gridview?

java - 如何在不每次加载模拟器的情况下在 android 模拟器上运行测试?

javascript - 如何通过 HttpUrlConnection 将图像从 Android 客户端发送到 Node.js 服务器?

java - 在 java 中将 java.awt.Image 保存到磁盘

android - Facebook - Android 上的无摩擦请求

android - 如何编写扩展函数来在 Kotlin 中实例化 AndroidViewModel?