首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找两个日期之间的天数的算法

查找两个日期之间的天数的算法
EN

Stack Overflow用户
提问于 2017-08-19 17:10:22
回答 3查看 1K关注 0票数 2

我用一个学校的问题来找出算法,找出两个给定日期之间的天数,然后用Java实现。

感兴趣的算法如下:http://www.sunshine2k.de/articles/coding/datediffindays/calcdiffofdatesindates.html (第4点)

它是效率更高的算法之一,因为它在实现过程中需要考虑的条件最少。我理解它在这种情况下是如何工作的,但我无法完全理解在其他地方使用原点/参考点的问题,因为似乎简单的减法就能完成大部分工作。

例如:为了找出9和5之间的区别,我可以直接做9-5而不是

ref = 1

difference = (9-ref) - (5-ref)

问:为什么在这种情况下使用这个参考点/起始点是有效的?我还可以考虑使用这个参考/原点来解决问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-19 19:05:40

软件工程的第一条规则是“不要重新发明轮子”。

在Java 8和更高版本中获得两个日期之间的天数是非常简单的,无需编写您自己的算法:

代码语言:javascript
运行
复制
    LocalDate d2 = LocalDate.now();
    LocalDate d1 = LocalDate.of(1950, Month.JANUARY, 1);
    long days = d1.until(d2,ChronoUnit.DAYS); 

甚至更好

代码语言:javascript
运行
复制
    long days = ChronoUnit.DAYS.between(d1, d2);
票数 3
EN

Stack Overflow用户

发布于 2017-08-19 17:39:42

为了得到同一个月的第9天和第5天的差异,你只需减去9-5 (如果那个时期没有日历革命:)。但是对于不同的月份和不同的年份,你必须考虑到不同月份的天数和一年中不同的天数。

解释这些因素的最简单的方法是从某一起源日(也就是所谓的朱利安日 )中获得绝对天数,而我们的时代从原点开始。

票数 0
EN

Stack Overflow用户

发布于 2017-08-19 17:41:27

实际上,9-5以与(9-0) - (5-0)相同的方式使用0的引用。

与数字( 0是参考点)不同,对于日期,参考点并不明显。应该是公元0分,1900年,还是别的什么?随着月数、闰年等日数的不同,日尺度也不一致。因此,找出一个日期与一个共同日期的“距离”是有用的,例如1970-01-01年。

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

https://stackoverflow.com/questions/45774243

复制
相关文章

相似问题

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