Diğer cevaplarda vurgulanmayan önemli bir fark, ilkel her zaman farkı için tekil ve çoğul isimlerin varlığıdır. İken timedeltasadece teklifler isimleri çoğul (örn hours, days) göreli zaman farkını, göstermek için relativedeltade (örneğin olarak teklifler tekil isimler hour, day) mutlak zaman bilgilerini göstermek için.
Bu, 2 sınıfın tanımından anlaşılır:
Definition: datetime.timedelta([days[, seconds[, microseconds[,
milliseconds[, minutes[, hours[, weeks]]]]]]])
Definition: relativedelta.relativedelta(self, dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0,
seconds=0, microseconds=0, year=None, month=None, day=None,
weekday=None, yearday=None, nlyearday=None, hour=None, minute=None,
second=None, microsecond=None)
Şimdi, tekil biçim tam olarak ne yapıyor? Tekil Form a ilave delta oluşturur datetimeilkel belirli bir tarih / zaman bu nesne setleri datetimebu nesne sözü relativedelta. İşte küçük bir örnek:
>>> import datetime as dt; from dateutil.relativedelta import *
>>> NOW = dt.datetime(2018, 11, 17, 9, 6, 31)
>>> NOW
datetime.datetime(2018, 11, 17, 9, 6, 31)
>>> NOW + relativedelta(hours=1)
datetime.datetime(2018, 11, 17, 10, 6, 31)
>>> NOW + relativedelta(hour=1)
datetime.datetime(2018, 11, 17, 1, 6, 31)
Bu, relativedeltakullanımı karmaşık hale getirebilecek bazı ilginç uygulamalarda kullanılmasına yol açabilir timedelta. Akla gelen, yuvarlanan bir şeydir.
İlginç Bir Uygulama: Hızla Yuvarlama
Şimdi size relativedeltabir datetimenesneyi en yakın dakikaya, saate, güne vb. Yuvarlarken nasıl daha anlamlı olduğunu göstereceğim .
En yakın saate yuvarlama:
Aşağıdakileri kullanarak yuvarlamanın ne kadar kolay olduğuna dikkat edin relativedelta:
NOW + relativedelta(hours=1, minute=0, second=0, microsecond=0)
dt.combine(NOW.date(),dt.time(NOW.hour,0,0)) + dt.timedelta(0,60*60,0)
Diğer daha karmaşık yuvarlamalar kullanılarak kolayca elde edilebilir relativedelta. Bununla birlikte, yapılabilecek tüm yuvarlamaların işlevler relativedeltakullanılarak datetimeve timedeltayalnızca biraz daha kıvrımlı bir şekilde de yapılabileceğini unutmayın.
dateime.timedeltaistediğinizi elde edecek ve haricidateutilpakete bağımlılıktan kaçınacak standart kitaplığı kullanın .