简而言之
Duration.ofMillis( … )
.toString()
…或者…
Duration.between( // `Duration` represents a span of time unattached to the timeline, in a scale of days-hours-minutes-seconds-nanos.
instantEarlier , // Capture the current moment to start.
Instant.now() // Capture the current moment now, in UTC.
) // Returns a `Duration` object.
.toString() // Generate a string in standard ISO 8601 format.
PT1M23.407S
ISO 8601
什么是从毫秒派生出的时间格式的最短、最简单、最不废话的写法?
ISO 8601 标准定义了日期时间值的文本格式。这些格式确实是短小、简单和不废话的。它们在各种文化中很容易阅读,实用且无歧义。
对于不与时间轴相关联的时间段,标准格式 是 PnYnMnDTnHnMnS
。 P
标记开始,T
将年-月-日与时-分-秒分开。因此,一个半小时为 PT1H30M
。
java.time.Duration
Java时间类包含一对用于表示时间跨度的类。Duration
类用于表示小时-分钟-秒,而Period
类则表示天-月-年。
Instant
Instant
类表示时间线上的一个时刻,在UTC中分辨率为纳秒(最多九位小数)。
Instant earlier = Instant.now() ; // Capture the current moment in UTC.
…
Instant later = Instant.now() ;
Duration d = Duration.between( earlier , later ) ;
String output = d.toString() ;
PT3.52S
关于java.time
java.time框架内置于Java 8及更高版本中。这些类替代了旧的、麻烦的传统日期时间类,例如java.util.Date
、Calendar
和SimpleDateFormat
。
Joda-Time项目现在处于维护模式,建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。无需字符串,无需java.sql.*
类。
如何获取java.time类?
ThreeTen-Extra项目扩展了java.time的额外类。该项目是java.time可能未来添加的可行性试验场。您可能会在这里找到一些有用的类,例如Interval
, YearWeek
, YearQuarter
以及更多。
System.currentTimeMillis() - time;
。 - Péter Török