无法计算年、月、日两个日期之间的差异。问题是每个月有30天,每年有365天,没有例外。这里有很多话题,但我没有找到任何能解决我的问题或帮助我解决问题的。我发现的每一个主题都只是用普通的方法解决计算差分的问题,这很简单。我如何计算这种差异?
我使用的是Java 7(没有机会安装joda time)和groovy 2.4.0。
例子有:
date from date to y m d
2014-02-01 - 2015-02-01 => 1 0 1
2000-02-10 - 2003-01-18 => 2 11 9
2004-02-02 - 2004-06-24 => 0 4 23
谢谢
在Groovy中找到了这个,不确定它是否符合您的要求,但它在问题中给出了结果:
def dateMalarkey(Date from, Date to) {
def val = [from, to].collect { d ->
def cal = Calendar.instance
cal.time = d
[y: cal[Calendar.YEAR], m: cal[Calendar.MONTH], d: cal[Calendar.DAY_OF_MONTH]]
}.inject { p, n ->
[y: Math.abs(p.y - n.y), m: Math.abs(p.m - n.m), d: Math.abs(p.d - n.d) + 1]
}
val.days = val.y * 365 + val.m * 30 + val.d
val
}
def inputs = [
[from: '2014-02-01', to: '2015-02-01'],
[from: '2000-02-10', to: '2003-01-18'],
[from: '2004-02-02', to: '2004-06-24']
]
inputs.each { d ->
println "$d.from - $d.to => " +
dateMalarkey(Date.parse('yyyy-MM-dd', d.from), Date.parse('yyyy-MM-dd', d.to))
}
你的例子似乎不一致。在第一种情况下,结束日期是排他性的,在另两种情况下,结束日期是包容性的。e、 g.2015-01-01到2015-01-01应该给出0d还是1d?假设是独占的,您需要的似乎可以这样做:将fromDate设置为yearFrom、monthFrom和daysFrom,将toDate设置为yearTo、monthTo和daysTo:
days = -yearFrom*365-monthFrom*30-daysFrom+yearTo*365+monthTo*30+daysTo
假设一年365天,一个月30天,你会得到天数的差异。那么,区别将是:
yearDifference = days/365 (as integer)
monthDifference = (days%365)/30
daysDifference = (days%365)%30
评论后编辑:如果你需要它的包容性,根据最后两个例子,只需在“天”中添加一个:
days = -yearFrom*365-monthFrom*30-daysFrom+yearTo*365+monthTo*30+daysTo+1
问题内容: 我想计算年份和月份中两个datetime.date()日期之间的差异。 例如; 所需结果: 谢谢。 问题答案: 如果您能够安装出色的dateutil软件包,则可以执行以下操作:
Python3 实例 以下代码通过导入 calendar 模块来计算每个月的天数: # Filename : test.py # author by : www.runoob.com import calendar monthRange = calendar.monthrange(2016,9) print(monthRange) 执行以上代码输出结果为: (3, 30) 输出的是一个元
我正在开发一个程序,它采用开始日期和结束日期,并返回年、月和日的不同值。每个类别都有自己的代码部分,这是我一直在使用的代码,到目前为止,它一直是半精确的,直到几天(有时是几个月。我甚至不想在这一点上愚弄闰年) Ex Start:04/10/2000 End:04/10/2006应该给我6年零个月零天。 年份代码: 月份代码: 天数代码:我已经尝试了多个版本,但没有太大的成功,例如,我可以计算天数之
我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试) 我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。 我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。 大多数时候函数工作但有时它不添加月如果天 我使用这个代码进行测试 (2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个
似乎不能处理一个数字的月份中的某一天: 在此示例中,正确解析日期,但引发异常。如果我使用零填充日期,例如“05/03/1969”,则两者都起作用。但是,如果每月的日期或每年的月份都是个位数,则将引发异常。 什么是格式来解析一个数字和两位数的月份和一年中的月份?
本文向大家介绍php计算年龄精准到年月日,包括了php计算年龄精准到年月日的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计算年龄精准到年月日的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家学习php程序设计有所帮助。