将JodaTime持续时间转换为Java 8持续时间:getStandardMinutes和其他方法

将JodaTime持续时间转换为Java 8持续时间:getStandardMinutes和其他方法,java,jodatime,java-time,Java,Jodatime,Java Time,我们正试图将一个使用库编写的产品转换为Java时间,这是由于我们国家的一些时区问题。(夏令时DST从来都不一致,而Joda Time需要进行特殊处理并使用偏移量才能使其正常工作) 我和《时代》杂志合作。有许多方法,例如 有没有一种简单的方法可以在Java8+上实现相同的功能?我假设基于代码和注释,它们不一定会返回所需的值。在Java8的Duration类中,Duration不包含参考日期。因此,您将提取的所有分钟都是标准分钟。在JodaTime中,getStandardXXX的注释明确指定,持续

我们正试图将一个使用库编写的产品转换为Java时间,这是由于我们国家的一些时区问题。(夏令时DST从来都不一致,而Joda Time需要进行特殊处理并使用偏移量才能使其正常工作)

我和《时代》杂志合作。有许多方法,例如


有没有一种简单的方法可以在Java8+上实现相同的功能?我假设基于代码和注释,它们不一定会返回所需的值。

在Java8的
Duration
类中,Duration不包含参考日期。因此,您将提取的所有分钟都是标准分钟。在JodaTime中,
getStandardXXX
的注释明确指定,持续时间假定为默认的一天长度(24小时/天、60分钟/小时、60秒/分钟…)。但是,这仅适用于希望将持续时间应用于参考(日期)时间的情况(例如,将此
持续时间
添加到此
日期时间
),在这种情况下,将“天”添加到在夏令时翻转的日期可能会产生意外的效果(如小时偏移)。但是,对于
Duration
对象来说,这是不相关的,因为它实际上只是表示“实时”中以纳秒为单位的持续时间,而不考虑时区等

本质上,您可以使用
toMinutes()
将分钟的确切数量作为
long

从javadoc:

获取此持续时间内的分钟数

这将通过将秒数除以60来返回持续时间内的总分钟数

此实例是不可变的,不受此方法调用的影响

java.time.Duration
=纳秒计数 例如,java.time中的
持续时间
表示未附加到时间线上的时间跨度,其刻度为24小时-天(不考虑日历)、小时、分钟、秒和几分之一秒。换句话说,
java.time.Duration
只不过是一个纳秒的计数,有很多方便的方法

上课时间跨度 下面是我制作的一个图形表,帮助您了解Java8和更高版本中构建的各种时间跨度类,以及ThreeTen额外库中的类

仅供参考,所有三个项目(、和)均由同一人领导


好极了。非常感谢你,@TreffnonX。