Diğer cevaplarda vurgulanmayan önemli bir fark, ilkel her zaman farkı için tekil ve çoğul isimlerin varlığıdır. İken timedelta
sadece teklifler isimleri çoğul (örn hours
, days
) göreli zaman farkını, göstermek için relativedelta
de (ö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 datetime
ilkel belirli bir tarih / zaman bu nesne setleri datetime
bu 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, relativedelta
kullanı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 relativedelta
bir datetime
nesneyi 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 relativedelta
kullanılarak datetime
ve timedelta
yalnızca biraz daha kıvrımlı bir şekilde de yapılabileceğini unutmayın.
dateime.timedelta
istediğinizi elde edecek ve haricidateutil
pakete bağımlılıktan kaçınacak standart kitaplığı kullanın .