TL;博士
Instant now = Instant.now();
String output = Duration.between(now ,
now.plus(473 , ChronoUnit.MILLISECONDS))
.toString();
PT0.473S
详细
正如其他说明,473毫秒是小于第二所以它显示为全零秒。
ISO 8601
不要使用时间 - 日期格式不曲目经过时间。它含糊不清,令人困惑。根据你的格式细节,会遇到这种分数问题。
相反,使用标准ISO 8601 format for a span of time:PnYnMnDTnHnMnS
其中P
标志着开始和T
从小时 - 分 - 秒分隔年,月,日。
您正在使用现在由java.time类取代的麻烦的旧日期时间类。
Instant
的Instant
类表示UTC时间轴与nanoseconds分辨率上一会儿。
Instant instant = Instant.now();
让我们在未来几分钟内模拟输入数据。
Instant future = instant.plus(473 , ChronoUnit.MILLISECONDS);
Duration
Duration
的类表示时间从时间线未连接的跨度。
Duration duration = Duration.between(instant , future);
以ISO 8601格式生成字符串。
String output = duration.toString();
PT0.473S
内部跟踪为若干整秒加上一个分数第二为纳秒数。所以,把它当做:
持续时间=(秒+的Nano)
你可以要求全总秒数和分数秒为纳秒。
long seconds = duration.getSeconds();
int nanos = duration.getNano();
关于java.time
的java.time框架是建立在Java 8和更高版本。这些课程取代了麻烦的旧日期时间课程,如java.util.Date
,.Calendar
,& java.text.SimpleDateFormat
。
Joda-Time项目现在位于maintenance mode,建议迁移到java.time。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。
大部分的java.time功能后移植到Java 6 和ThreeTenABP还适于Android(见How to use…)。
ThreeTen-Extra项目扩展java.time与其他类。这个项目是未来可能增加java.time的一个试验场。你可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
,等等。
你会得到什么输出和你期望的输出? –
小数点后显示符号。 (1000分之473)%60 = 0.473。所以0秒是合乎逻辑的。 –
谢谢。我知道我的错误..我知道它不到1秒 – BeyondProgrammer