簡體   English   中英

Python中兩個日期之間的差異

[英]Difference between two dates in Python

我有兩個不同的日期,我想知道它們之間的天數差異。 日期的格式為 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 是我要添加的天數。 結果是另一個日期。

我需要一個函數,我可以在其中給出兩個日期,結果將是一個日期相差天數的 int。

使用-獲取兩個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)

另一個簡短的解決方案:

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()

我嘗試了上面 larsmans 發布的代碼,但是有幾個問題:

1) 原樣的代碼會拋出 mauguerra 提到的錯誤 2) 如果將代碼更改為以下內容:

...
    d1 = d1.strftime("%Y-%m-%d")
    d2 = d2.strftime("%Y-%m-%d")
    return abs((d2 - d1).days)

這會將您的日期時間對象轉換為字符串,但是有兩件事

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

嘗試這個:

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()

您可以使用第三方庫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)

基於此已刪除副本中的答案

我嘗試了一些代碼,但最終使用了像(在 Python 3 中)一樣簡單的東西:

from datetime import datetime
df['difference_in_datetime'] = abs(df['end_datetime'] - df['start_datetime'])

如果您的start_datetimeend_datetime列是datetime64[ns]格式,則datetime理解它並返回天數 + 時間戳的差異,這是timedelta64[ns]格式。

如果只想查看天數的差異,則可以使用以下方法僅將start_datetimeend_datetime日期部分分開(也適用於時間部分):

df['start_date'] = df['start_datetime'].dt.date
df['end_date'] = df['end_datetime'].dt.date

然后運行:

df['difference_in_days'] = abs(df['end_date'] - df['start_date'])

pd.date_range('2019-01-01', '2019-02-01').shape[0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM