3

只是想知道,很棒的 JodaTime 库中的 DateTime 类有一个

minus(long millis)

方法,它返回一个新的 DateTime 对象减去指定的毫秒数,那么为什么我需要

minusMillis(int millis)

方法,它的作用相同,但毫秒数为整数? Integer.MAX_VALUE以毫秒为单位只​​有 24 天,这没什么帮助,大概它只是将 a 转换int为 along并将其泵入另一种方法?

JodaTime 库写得非常好,我认为可能是我失踪的原因。

http://joda-time.sourceforge.net/api-release/org/joda/time/DateTime.html#minusMillis(int )

编辑:为了澄清,我想知道为什么我应该使用该minusMillis(int)方法 - 我了解更强大的minus(long)方法是什么。

4

3 回答 3

3

我怀疑它是因为在 1.0 版中只有minus(long duration)方法,但在 1.1 版中minusXxxx(int units)添加了导致minusMillis(int)一致性添加,并且minus(long)没有为了向后兼容性而删除。

顺便说一句:我想,有一个plus(long duration)和一个plusMillis(int millis)相同的原因。

于 2012-10-11T10:18:42.617 回答
3

方法 minusMillis(int millis),可以减去最大 Integer.Max 毫秒,当转换为天时 (2^31 -1) 大约是 24.8 天

因此,如果您想减去两个日期对象,例如 date1 -(no. of days) 其中 no.of days > 29,那么您不能使用 minusMillis(int millis) 来执行此操作,因此该方法

日期时间减(长持续时间)

提供。

于 2012-10-11T10:20:11.507 回答
1

然后你查看源码DateTime你会发现这两种方法最终都会调用DateTime.withMillis(long newMillis). DateTime.minus(long duration)调用DateTime.withDurationAdded(long durationToAdd, int scalar)基本上什么都不做,只是将毫秒转换为DateTime.withMillis(long newMillis).

所以我认为这minus(long duration)只是出于兼容性原因而存在。

于 2012-10-11T10:22:31.503 回答