2013-03-19 22 views
7

Bir script üzerinde çalışıyorum, Python'da datetime nesneleriyle çalışmalıydım. Bir noktada bu nesnelerden birine sahibim ve haftanın gününü (bir sayı değeri) 3 harfli bir biçimde (yani Sal, Çar vb.) Almam gerekiyor. İşte kodun kısa bir örneğidir, dateMatch.group() 'da yaptığım tek şey regex eşleştirmesiyle elde edilen bir dizenin parçalarını almaktır. O tarih saat nesne itibaren Hafta içi gün, python'daki bir datetime nesnesinden 3 harf biçiminde nasıl edinilir?

from datetime import datetime 

day = dateMatch.group(2) 
month = dateMatch.group(3) 
year = dateMatch.group(4) 
hour = dateMatch.group(5) 
minute = dateMatch.group(6) 
second = dateMatch.group(7) 

tweetDate = datetime(int(year), months[month], int(day), int(hour), int(minute), int(second)) 

Ben sayısal gün değerini (yani 18) almak ve ben (yani Salı) dönüştürmek gerekir.

Teşekkürler!

cevap

10

http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

tarih, tarih saat ve zaman tüm açık bir biçim dizesi kontrolü altında süreyi temsil eden bir dize oluşturmak için, bir strftime(format) yöntemini desteklemez nesneleri.

...

% a - Yerel Ayarlar en kısaltılmış gün ismi.

>>> datetime.datetime.now().strftime('%a') 
    'Wed' 
+1

Bu eğlenceli. Makinemde 'Tue' yazıyor. :) –

+1

Saat dilimimde saat 0:24. –

+0

Parlak, teşekkürler! –

1

bir datetime object arasında strftime method dönüşüm belirlemek için current locale kullanır.

>>> from datetime import datetime 
>>> t = datetime.now() 
>>> t.strftime('%a') 
'Tue' 
>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'fr_FR') 
'fr_FR' 
>>> t.strftime('%a') 
'Mar' 

bu kabul edilebilir değilse (Ayrıca, İnternet protokolü üzerinden iletimi için bir tarih biçimlendirme eğer örneğin, gerçekte ne olursa olsun, kullanıcının yerel ayarının dize Tue gerektirebilir), o zaman böyle bir şey gerekir:

weekdays = 'Mon Tue Wed Thu Fri Sat Sun'.split() 
return weekdays[datetime.now().weekday()] 

Yoksa "C" yerel talep açıkça olabilir:

locale.setlocale(locale.LC_TIME, 'C') 
return datetime.now().strftime('%a') 

ama böyle yerel ayarlama konusunda tüm biçimlendirme işlemleri etkilenir Programınızdaki tüm konular, bu yüzden böyle iyi bir fikir olmayabilir.

0

doc kullandığım: http://docs.python.org/2/library/datetime.html

Önce bugünün tarihine gerek:

today = date.today() # Which returns a date object 

hafta içi kullanarak bir tarih nesneden bulunabilir:

weekday = today.timetuple()[6] # Getting the 6th item in the tuple returned by timetuple 

Bu gün döndürür Pazartesiden (0 Pazartesi olur), bu tam sayıyı kullanarak aşağıdakileri yapabilirsiniz:

print ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][weekday] # Prints out the weekday in three chars 

Alacağınız kombine:

yerine hardcoding
from datetime import date 

today = date.today() # Gets the date in format "yyyy-mm-ddd" 
print today 
weekday = today.timetuple()[6] # Gets the days from monday 
print ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][weekday] # Prints out the weekday in three chars 
0

[ "Mon", "Sal", "Çar", "Per", "Cum", "Sat", "Güneş"], denemek :

import calendar 
weekdays = [x for x in calendar.day_abbr] # in the current locale 
İlgili konular