2013-03-19 11 views
7

Pracuję nad skryptem, muszę pracować z obiektami datetime w Pythonie. W pewnym momencie mam jeden z tych obiektów i muszę uzyskać dzień tygodnia (który jest wartością liczbową) w formacie trzyliterowym (tj. Wt., Śr. Itp.). Oto krótka próbka kodu, w dateMatch.group() wszystko, co robię, polega na otrzymywaniu kawałków ciągu uzyskanego za pomocą dopasowania regex.Jak uzyskać dzień tygodnia w formacie 3-literowym z obiektu datetime w python?

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)) 

Od tego czasu obiekt data otrzymuję wartość liczbową dzień (czyli 18) i muszę go przekonwertować do (tj wt).

Dzięki!

Odpowiedz

10

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

data, datetime, a czas wszystkich obiektów obsługują metodę strftime(format), aby utworzyć ciąg reprezentujący czas pod kontrolą wyraźnego formatu ciąg.

...

% a - skrócona nazwa dnia tygodnia lokalna.

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

To zabawne. Na mojej maszynie jest napisane "wtorek". :) –

+1

To 0:24 w mojej strefie czasowej. –

+0

Świetne, dzięki! –

1

strftime method z datetime object wykorzystuje current locale celu określenia konwersji.

>>> 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' 

Jeśli to nie jest do zaakceptowania (na przykład, jeśli jesteś formatowania datę transmisji przez protokół internetowy, może rzeczywiście wymagają ciąg Tue niezależnie od lokalizacji użytkownika), to trzeba coś takiego:

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

Albo można bezpośrednio zwrócić się do "C" regionalne:

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

ale ustawienie locale jak to wpływa na wszystkie operacje formatowania wszystkie wątki w twoim programie, więc może to nie być taki dobry pomysł.

0

Doc użyłem: http://docs.python.org/2/library/datetime.html

Najpierw musisz datę dzisiejszą:

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

Dzień tygodnia można znaleźć od obiektu Date za pomocą:

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

ta zwraca dzień od poniedziałku (0 to poniedziałek), używając tej liczby całkowitej, możesz wykonać następujące czynności:

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

Łączący otrzymasz:

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

Zamiast hardcoding [ "Mon", "wt", "Śr", "pon", "piątek", "So", "Sun"], spróbuj :

import calendar 
weekdays = [x for x in calendar.day_abbr] # in the current locale 
Powiązane problemy