我有两个不同的日期,我想知道它们之间的天数差异.日期格式为YYYY-MM-DD.
我有一个函数可以将给定数字添加或减去日期:
def addonDays(a, x):
ret = time.strftime("%Y-%m-%d",time.localtime(time.mktime(time.strptime(a,"%Y-%m-%d"))+x*3600*24+3600))
return ret
Run Code Online (Sandbox Code Playgroud)
其中A是日期,x是我想要添加的天数.结果是另一个日期.
我需要一个函数,我可以给两个日期,结果将是一个日期差异为天的int.
Fre*_*Foo 224
使用-得到两者之间的区别datetime对象,并采取days会员.
from datetime import datetime
def days_between(d1, d2):
d1 = datetime.strptime(d1, "%Y-%m-%d")
d2 = datetime.strptime(d2, "%Y-%m-%d")
return abs((d2 - d1).days)
Run Code Online (Sandbox Code Playgroud)
0x8*_*00D 22
另一个简短的解决
from datetime import date
def diff_dates(date1, date2):
return abs(date2-date1).days
def main():
d1 = date(2013,1,1)
d2 = date(2013,9,13)
result1 = diff_dates(d2, d1)
print '{} days between {} and {}'.format(result1, d1, d2)
print ("Happy programmer's day!")
main()
Run Code Online (Sandbox Code Playgroud)
Tom*_*koo 10
您可以使用第三方库 dateutil,它是内置datetime.
使用该模块解析日期parser非常简单:
from dateutil import parser
date1 = parser.parse('2019-08-01')
date2 = parser.parse('2019-08-20')
diff = date2 - date1
print(diff)
print(diff.days)
Run Code Online (Sandbox Code Playgroud)
我尝试了上面 larsmans 发布的代码,但是存在几个问题:
1)原样的代码将抛出 mauguerra 提到的错误 2)如果将代码更改为以下内容:
...
d1 = d1.strftime("%Y-%m-%d")
d2 = d2.strftime("%Y-%m-%d")
return abs((d2 - d1).days)
Run Code Online (Sandbox Code Playgroud)
这会将您的日期时间对象转换为字符串,但是有两件事
1)尝试执行 d2 - d1 将会失败,因为您无法在字符串上使用减号运算符,并且 2)如果您阅读了上述答案的第一行,您想在两个日期时间对象上使用 - 运算符,但是,您只需将它们转换为字符串
我发现你实际上只需要以下内容:
import datetime
end_date = datetime.datetime.utcnow()
start_date = end_date - datetime.timedelta(days=8)
difference_in_days = abs((end_date - start_date).days)
print difference_in_days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197714 次 |
| 最近记录: |