我有一个像“15:30”这样的时间字符串,我想将该字符串与当前时间进行比较。请推荐一些简单的。以及如何以小时分钟格式获取当前时间(“HH:mm”)
原文由 mayank sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个像“15:30”这样的时间字符串,我想将该字符串与当前时间进行比较。请推荐一些简单的。以及如何以小时分钟格式获取当前时间(“HH:mm”)
原文由 mayank sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
tl;博士
细节
你应该反过来想: _如何让那个字符串变成一个时间值_。您不会通过将数字转换为字符串来尝试数学。日期时间值也是如此。
避免使用旧的捆绑类,java.util.Date 和 .Calendar,因为它们出了名的麻烦,在设计和实现上都有缺陷。它们被 Java 8 中新的 java.time 包 所取代。 java.time 的灵感来自 Joda-Time 。
java.time 和 Joda-Time 都提供了一个类来捕获没有任何日期到时区的时间:
LocalTime
。java.time
使用 Java 内置的 java.time 类,特别是
LocalTime
。获取您当地时区的当前时间。根据您的输入字符串构建一天中的时间。与isBefore
、isAfter
或isEqual
方法进行比较。最好指定您想要/期望的时区,而不是隐式依赖 JVM 当前的默认时区。
乔达时间
本例中使用 Joda-Time 库的代码恰好与上面看到的 java.time 代码几乎相同。
请注意, Joda-Time 项目现在处于 维护模式,团队建议迁移到 java.time 类。
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 旧 日期时间类,例如
java.util.Date
、Calendar
和SimpleDateFormat
。现在处于 维护模式 的 Joda-Time 项目建议迁移到 java.time 类。
要了解更多信息,请参阅 Oracle 教程。并在 Stack Overflow 中搜索许多示例和解释。规范是 JSR 310 。
在哪里获取 java.time 类?
ThreeTen-Extra 项目用附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如
Interval
、YearWeek
、YearQuarter
等等。