首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么JodaTime的DateTime类有一个minusMillis()方法?

为什么JodaTime的DateTime类有一个minusMillis()方法?
EN

Stack Overflow用户
提问于 2012-10-11 18:11:44
回答 3查看 1.7K关注 0票数 3

真的,我只是在想,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)方法是用来做什么的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-11 18:18:43

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

顺便说一句,我想,出于同样的原因,还有一个plus(long duration)和一个plusMillis(int millis)

票数 3
EN

Stack Overflow用户

发布于 2012-10-11 18:20:12

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

因此,如果您想要减去两个date对象,使date1 -(no。天数),如果no.of天数大于29,则不能使用minusMillis(int millis)执行此操作,因此该方法

DateTime minus(long duration)

是提供的。

票数 3
EN

Stack Overflow用户

发布于 2012-10-11 18:22:32

然后查看DateTime的源代码,您会发现这两个方法最终都会调用DateTime.withMillis(long newMillis)DateTime.minus(long duration)调用DateTime.withDurationAdded(long durationToAdd, int scalar),它基本上不做任何事情,只是将毫秒数转换为DateTime.withMillis(long newMillis)所需的格式。

所以我假设minus(long duration)的存在仅仅是出于兼容性的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12837187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档