Tartışmayı iki adımda özetliyorum:
- Ham biçimi bir
datetime
nesneye dönüştürün .
- Hafta sayısını hesaplamak için bir
datetime
nesnenin veya nesnenin işlevini kullanın date
.
Isınmak
`` `Piton
from datetime import datetime, date, time
d = date(2005, 7, 14)
t = time(12, 30)
dt = datetime.combine(d, t)
print(dt)
`
1. adım
Bir datetime
nesneyi manuel olarak oluşturmak için datetime.datetime(2017,5,3)
veya öğesini kullanabiliriz datetime.datetime.now()
.
Ama gerçekte, genellikle mevcut bir dizeyi ayrıştırmamız gerekir. formatı belirtmeniz gereken strptime
fonksiyonlar kullanabiliriz datetime.strptime('2017-5-3','%Y-%m-%d')
. Farklı format kodlarının detaylarını resmi belgelerde bulabilirsiniz .
Alternatif olarak, daha uygun bir yol da dateparse modülünü kullanmaktır . Örnekler dateparser.parse('16 Jun 2010')
, dateparser.parse('12/2/12')
veyadateparser.parse('2017-5-3')
Yukarıdaki iki yaklaşım bir datetime
nesne döndürecektir .
2. adım
datetime
Aramak için elde edilen nesneyi kullanın strptime(format)
. Örneğin,
`` `Piton
dt = datetime.strptime('2017-01-1','%Y-%m-%d') # return a datetime object. This day is Sunday
print(dt.strftime("%W")) # '00' Monday as the 1st day of the week. All days in a new year preceding the 1st Monday are considered to be in week 0.
print(dt.strftime("%U")) # '01' Sunday as the 1st day of the week. All days in a new year preceding the 1st Sunday are considered to be in week 0.
print(dt.strftime("%V")) # '52' Monday as the 1st day of the week. Week 01 is the week containing Jan 4.
`
Hangi formatın kullanılacağına karar vermek çok zor. Daha iyi bir yol, bir date
nesneyi çağırmaktır isocalendar()
. Örneğin,
`` `Piton
dt = datetime.strptime('2017-01-1','%Y-%m-%d') # return a datetime object
d = dt.date() # convert to a date object. equivalent to d = date(2017,1,1), but date.strptime() don't have the parse function
year, week, weekday = d.isocalendar()
print(year, week, weekday) # (2016,52,7) in the ISO standard
`
Gerçekte, date.isocalendar()
özellikle "Noel-Yeni Yıl" alışveriş sezonunda haftalık bir rapor hazırlamak için kullanmanız daha olası olacaktır .