Weekday - Herausfinden, an welchem Wochentag ein Datum ist

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hi,

vielleicht brauchen das andere außer mir auch manchmal.

Mal ein verschwörerisches Beispiel:

Code: Alles auswählen

$ weekday 23.5.84
Mittwoch
http://paste.pocoo.org/show/137025/

Falls übrigens jemand auf das Programm ``date`` verweisen will:

Code: Alles auswählen

$ date --date=23.5.84 +%A
date: ungültiges Datum „23.5.84
BlackJack

@snafu: Du musst `date` das Datum halt im richtigen Format geben:

Code: Alles auswählen

bj@s8n:~$ date --date=1984-05-23 +%A
Wednesday
Ansonsten hat Dein Snippet das Problem, dass `locale.getdefaultlocale()` keinen Wert zurückgeben muss, den man auch zum Setzen verwenden kann. Und das passiert in sovielen Fällen, dass der übliche Weg die im System eingestellte "locale" zu setzen, eben *nicht* über diese Funktion geht, sondern einfach eine leere Zeichenkette an dieser Stelle verwendet.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Also ich hätt's bestenfalls als Snippet verkauft für ne Sache die ja eigentlich ein Einzeiler, höchstens Zweizeiler ist.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich hab mich im Forum vertan. Kann von mir aus verschoben werden.

@BlackJack: Richtig, meines Wissens kann man ``date`` keine eigenen Formate zum Parsen mitgeben. Darum ging's hauptsächlich.

Also bei mir steht ``locale.LC_TIME`` standardmäßig auf ``(None, None)`` und hat beim Testen im Interpreter immer englische Namen zurückgegeben. ``locale.getdefaultlocale()`` erzeugt hier ``('de_DE', 'UTF8')`` und führt zu deutschen Namen.
BlackJack

@snafu: Was bei *Dir* da steht, und ob das bei *Dir* funktioniert, ist eigentlich ziemlich egal. Es gibt viele Systeme, bei denen das eben *nicht* so funktioniert. In der Python-Doku steht:
Applications typically start with a call of

Code: Alles auswählen

import locale
locale.setlocale(locale.LC_ALL, '')
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Das hab ich nicht gelesen. :oops:

Danke für den Hinweis. Mein vorheriger Beitrag war mehr so gemeint, warum ich diesen Weg gegangen bin. Es hat eben geklappt. Wenn ein leerer String "massentauglicher" (im positiven Sinne) ist, dann nutze ich den natürlich. Heraus kommt ja das selbe. :)

Code: Alles auswählen

def date_to_dayname(date):
    """Return the day name based on a date/datetime/time object"""
    old = locale.getlocale(locale.LC_ALL)
    try:
        locale.setlocale(locale.LC_ALL, '')
        return date.strftime('%A')
    finally:
        locale.setlocale(locale.LC_ALL, old)
Antworten