Python中两个日期之间的差异
我有两个不同的日期,我想知道它们之间的天数差异。日期的格式为YYYY-MM-DD 我有一个函数,可以将给定的数字与日期相加或相减:Python中两个日期之间的差异,python,date,Python,Date,我有两个不同的日期,我想知道它们之间的天数差异。日期的格式为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 其中A是日期,x是我要添加的天数。结果是另一个日期 我需要一个函数,其
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
其中A是日期,x是我要添加的天数。结果是另一个日期
我需要一个函数,其中我可以给出两个日期,结果将是一个以天为单位的日期差的整数。使用
-
获取两个日期时间
对象之间的差,并取天
成员
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)
我尝试了上面larsmans发布的代码,但有几个问题: 1) 代码将抛出Maugurera提到的错误 2) 如果将代码更改为以下内容:
...
d1 = d1.strftime("%Y-%m-%d")
d2 = d2.strftime("%Y-%m-%d")
return abs((d2 - d1).days)
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
这会将datetime对象转换为字符串,但有两件事
1) 尝试执行d2-d1将失败,因为您无法对字符串和
2) 如果您阅读了上面答案的第一行,您希望在两个datetime对象上使用-运算符,但您只是将它们转换为字符串
我发现你实际上只需要以下几点:
...
d1 = d1.strftime("%Y-%m-%d")
d2 = d2.strftime("%Y-%m-%d")
return abs((d2 - d1).days)
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
另一个简短的解决方案:
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()
试试这个:
data=pd.read_csv('C:\Users\Desktop\Data Exploration.csv')
data.head(5)
first=data['1st Gift']
last=data['Last Gift']
maxi=data['Largest Gift']
l_1=np.mean(first)-3*np.std(first)
u_1=np.mean(first)+3*np.std(first)
m=np.abs(data['1st Gift']-np.mean(data['1st Gift']))>3*np.std(data['1st Gift'])
pd.value_counts(m)
l=first[m]
data.loc[:,'1st Gift'][m==True]=np.mean(data['1st Gift'])+3*np.std(data['1st Gift'])
data['1st Gift'].head()
m=np.abs(data['Last Gift']-np.mean(data['Last Gift']))>3*np.std(data['Last Gift'])
pd.value_counts(m)
l=last[m]
data.loc[:,'Last Gift'][m==True]=np.mean(data['Last Gift'])+3*np.std(data['Last Gift'])
data['Last Gift'].head()
pd.date\u range('2019-01-01','2019-02-01')。shape[0]我尝试了一些代码,但最终使用了一些简单的代码(在Python 3中): 如果开始日期时间和结束日期时间列的格式为
datetime64[ns]
格式,则datetime会理解它,并返回天数+时间戳的差值,即timedelta64[ns]
格式
如果只想看到天数的差异,可以使用(也适用于时间部分)仅分隔开始日期时间和结束日期时间的日期部分:
然后运行:
df['difference_in_days'] = abs(df['end_date'] - df['start_date'])
您可以使用第三方库,它是内置日期时间
的扩展
使用模块解析日期非常简单:
from dateutil import parser
date1 = parser.parse('2019-08-01')
date2 = parser.parse('2019-08-20')
diff = date2 - date1
print(diff)
print(diff.days)
根据中的答案回答。答案很好。要明确的是,
(d2-d1)
的结果将是一个对象。我在控制台上有一个错误:键入对象“datetime.datetime”没有属性“strtime”我得到TypeError:“int”对象在我尝试对timedelta对象执行.days()操作时是不可调用的,文档也没有提到它()。请您也提一下好吗?我认为这很重要,因为这是我在不看文档的情况下尝试seconds
时期望得到的结果。@他们让d2和d1正好分开一天,看看这是否是你期望的;-)我的代码使用datetime.strtime
将字符串转换为datetime
对象。因为OP声明“日期的格式是YYYY-MM-DD”,所以我假设日期表示为字符串。如果不是,则显然不需要进行转换。diff\u dates
函数中的If
不是完全没有必要吗?根据绝对值的定义,abs(date1-date2)
将始终等于abs(date2-date1)
。至少在Python3.5中,print语句应该是这样的:print({}和{}之间的{}天)。format(result1,d1,d2))注意addonDays函数将在DST天失败。你是对的。我已经修改了这个函数。如果你加上3600(一小时)就行了。请以某种方式更正答案,以恢复否决票的声誉。建议一些没有“熊猫”的东西