我正在尝试从Period对象实例获取总毫秒数(不 millis字段)。我尝试了多次转换,因为我找不到任何方法可以轻松实现。
有没有人需要它并设法检索它?
(我需要这个补丁,找出一个负期;负毫秒=负期。)
答案 0 :(得分:16)
你不能直接从Period
获得毫秒数,因为像月份和年份这样的字段在毫秒数方面是可变的。
为了完成这项工作,您需要提供一个“基线”时刻,Period
可以从中计算实际的毫秒持续时间。
例如,Period.toDurationFrom
和Period.toDurationTo
方法采用这样的基线瞬间,并计算Duration
对象,然后您可以获得毫秒数。
toDurationFrom
的{{3}}说:
获取此时间段相对于开始时刻的总毫秒持续时间。 此方法将周期添加到指定的时刻以计算持续时间。
必须提供瞬间,因为一段时间的持续时间会有所不同。例如,由于长度不同的月份,1个月的时间段可以在28到31天之间变化,以毫秒为单位。同样,一天的夏令时可能会有所不同,通常在23到25小时之间。
因此,您需要为您的应用选择合适的基准时刻。
答案 1 :(得分:2)
如果你想从特定的时间获得millis,可以使用DateTime类的plus()或minus()方法来完成。
e.g。从现在
获得毫克 DateTime start = new DateTime(); //NOW
DateTime end = start.plus(<your period>);
long millis = end.getMillis() - start.getMillis();
答案 2 :(得分:1)
使用Joda时间2.3,它是:
toStandardDuration().getMillis()