Yıl içinde Python timedelta
Eğer yıl sayısı biraz tarihten beri olmadığını kontrol etmek istiyorum. Şu anda datetime
modülü timedelta
var ve yıl dönüştürmek için nasıl bilmiyorum.
CEVAP
Bir daha timedelta
nasıl geçti söyle; sana da (ya da bitiş) başlangıç tarihi bilmek gerekir. (Artık yıl olmuş.)
En iyi bahisdateutil.relativedelta
objectama bu bir 3. parti modül kullanmaktır. Eğer n
yıl biraz tarih oldu datetime
(şu an için varsayarak) bilmek istiyorsanız, şunları yapabilirsiniz::
from dateutil.relativedelta import relativedelta
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
return from_date - relativedelta(years=years)
Oldukça standart kütüphane ile sopa istiyorsanız, cevabı biraz daha karmaşık::
from datetime import datetime
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
try:
return from_date.replace(year=from_date.year - years)
except:
# Must be 2/29!
assert from_date.month == 2 and from_date.day == 29 # can be removed
return from_date.replace(month=2, day=28,
year=from_date.year-years)
2/29, 18 yıl önce eğer 2/29, bu işlev 2/28 dönecektir yoktu. Oldukça 3/1, sadece değiştirmek okumak için return
son deyimi dönmek isterseniz::
return from_date.replace(month=3, day=1,
year=from_date.year-years)
Soru aslında biraz tarihten beri ne kadar zaman bilmek istediğini söyledi. Yıllık bir tamsayı istediğiniz varsayarsak, yılda 365.25 gün dayalı tahmin edebilirsiniz ve yearsago
fonksiyonları yukarıda tanımlanan birini kullanarak kontrol edin::
def num_years(begin, end=None):
if end is None:
end = datetime.now()
num_years = int((end - begin).days / 365.25)
if begin > yearsago(num_years, end):
return num_years - 1
else:
return num_years
Nasıl klon ya da Python içinde bir lis...
Nasıl dizin Python içinde olup olmadığ...
Bir işlev içinde statik değişkenler Py...
Python listesi kontrol öğesi başka bir...
Selenyum WebDriver içinde WebElement H...