Ik heb twee verschillende datums en ik wil het verschil in dagen ertussen weten. Het formaat van de datum is JJJJ-MM-DD.
Ik heb een functie die een bepaald getal kan TOEVOEGEN of AFTREKKEN bij een datum:
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
waarbij A de datum is en x het aantal dagen dat ik wil toevoegen. En het resultaat is een nieuwe datum.
Ik heb een functie nodig waar ik twee datums kan geven en het resultaat zou een int zijn met een datumverschil in dagen.
Antwoord 1, autoriteit 100%
Gebruik -
om het verschil tussen twee datetime
-objecten te krijgen en neem het days
-lid.
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)
Antwoord 2, autoriteit 10%
Nog een korte oplossing:
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()
Antwoord 3
Ik heb de code geprobeerd die hierboven door larsmans is gepost, maar er zijn een paar problemen:
1) De code zoals deze is, zal de fout veroorzaken zoals vermeld door mauguerra
2) Als u de code in het volgende verandert:
...
d1 = d1.strftime("%Y-%m-%d")
d2 = d2.strftime("%Y-%m-%d")
return abs((d2 - d1).days)
Hiermee wordt uw DateTime-objecten omgezet naar snaren, maar twee dingen
1) Proberen om D2 – D1 te doen, zal falen omdat u de min-operator op snaren niet kunt gebruiken
2) Als u de eerste regel van het bovenstaande antwoord leest, vermeldt u, wilt u de – operator op twee datetime-objecten gebruiken, maar u hebt ze gewoon geconverteerd naar strings
Wat ik heb gevonden, is dat u letterlijk alleen het volgende nodig hebt:
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
Antwoord 4
Probeer dit:
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()
Antwoord 5
U kunt de third-Party Library dateutil
, een extensie voor de ingebouwde datetime
.
DATA DATA MET DE parser
module is erg eenvoudig:
from dateutil import parser
date1 = parser.parse('2019-08-01')
date2 = parser.parse('2019-08-20')
diff = date2 - date1
print(diff)
print(diff.days)
Antwoord op basis van die van Dit verwijderde dubbele sup>
Antwoord 6
Ik heb een paar codes geprobeerd, maar uiteindelijk iets gebruiken als simpel als (in Python 3):
from datetime import datetime
df['difference_in_datetime'] = abs(df['end_datetime'] - df['start_datetime'])
Als uw Start_Datetime b>en end_datetime b>kolommen zijn in datetime64[ns]
formaat, DATETIME b>begrijpt het en keert u terug en ga terug Het verschil in dagen + tijdstempel, dat is in timedelta64[ns]
formaat.
Als u alleen het verschil in dagen b>wilt zien, kunt u alleen de Datum b>scheiden van het deel Start_Datetime b>en End_DatTime b>met behulp van (werkt ook voor de tijd b>gedeelte):
df['start_date'] = df['start_datetime'].dt.date
df['end_date'] = df['end_datetime'].dt.date
en vervolgens uitvoeren:
df['difference_in_days'] = abs(df['end_date'] - df['start_date'])
Antwoord 7
PD.DATE_RANGE (‘2019-01-01’, ‘2019-02-01’). Vorm [0]