真的,我只是在想,JodaTime库中的DateTime类有一个
minus(long millis)
方法,该方法返回一个新的DateTime对象减去指定的毫秒数,那么为什么我还需要
minusMillis(int millis)
方法,它做了同样的事情,但是毫秒数是整数?以毫秒为单位的Integer.MAX_VALUE
只有24天,这没有什么帮助,假设它只是将int
转换为long
,并将其放入另一个方法中?
JodaTime库写得太好了,我想这可能是我遗漏的一个原因。
http://joda-time.sourceforge.net/api-release/org/joda/time/DateTime.html#minusMillis(int
编辑:为了澄清,我想知道为什么要使用minusMillis(int)
方法--我知道更强大的minus(long)
方法是用来做什么的。
发布于 2012-10-11 10:18:43
我怀疑这是因为在1.0版本中只有minus(long duration)
方法,但在1.1版本中添加了minusXxxx(int units)
,导致添加minusMillis(int)
是为了保持一致性,而不是删除minus(long)
是为了向后兼容。
顺便说一句,我想,出于同样的原因,还有一个plus(long duration)
和一个plusMillis(int millis)
。
发布于 2012-10-11 10:20:12
方法minusMillis(int millis)可以减去最大Integer.Max毫秒,当转换为天时,它是(2^31 -1)大约是24.8天
因此,如果您想要减去两个date对象,使date1 -(no。天数),如果no.of天数大于29,则不能使用minusMillis(int millis)执行此操作,因此该方法
是提供的。
发布于 2012-10-11 10:22:32
然后查看DateTime
的源代码,您会发现这两个方法最终都会调用DateTime.withMillis(long newMillis)
。DateTime.minus(long duration)
调用DateTime.withDurationAdded(long durationToAdd, int scalar)
,它基本上不做任何事情,只是将毫秒数转换为DateTime.withMillis(long newMillis)
所需的格式。
所以我假设minus(long duration)
的存在仅仅是出于兼容性的原因。
https://stackoverflow.com/questions/12837187
复制相似问题