我正在查看Java 8中的Duration类,并注意到它没有:
long toSeconds();
但它有所有其他toXXXXX()
来获得天,小时,分钟,毫秒,纳米。我确实看到一个getSeconds()
方法,它返回此持续时间对象中的秒数。还有一种get(TemporalUnit unit)
方法可以将持续时间作为请求的时间单位。但为什么不保持toSeconds()
方法的一致性呢?
答案 0 :(得分:54)
让我们看一下docs说的话:
此类以秒和纳秒为单位模拟一个数量或时间量。
这基本上意味着用于存储所表示的时间量的单位是秒。例如,存储持续时间为5分钟和10纳秒,存储300(秒)和10(纳秒)。因此,无需将转换为秒。您使用getSeconds()
获取秒数。
看看我的意思?所有其他方法都将转换为相应的单位:天,分钟,小时...这就是为什么它们以to
开头,意思是convertedTo
。由于您不需要进行转换以获得持续时间(以秒为单位),因此以秒为单位返回持续时间的方法将以get
开头。
答案 1 :(得分:37)
这是一个已知问题,其修复程序安排在Java 9中进行:https://bugs.openjdk.java.net/browse/JDK-8142936
Java 9中添加的新方法toSeconds
。请参阅source code。
/**
* Gets the number of seconds in this duration.
* <p>
* This returns the total number of whole seconds in the duration.
* <p>
* This instance is immutable and unaffected by this method call.
*
* @return the whole seconds part of the length of the duration, positive or negative
*/
public long toSeconds() {
return seconds;
}
答案 2 :(得分:4)
答案 3 :(得分:1)
引自http://tutorials.jenkov.com/java-date-time/duration.html:
&#34;您可能会问自己是否没有toSeconds()方法。没有,因为这与持续时间的秒部分相同。您可以使用前面解释的getSeconds()方法获取持续时间的秒部分。&#34;