Datumsausgabe in Deutsch

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Dienstag 15. März 2005, 17:32

Hallo,
ich habe folgendes Beispiel:

Code: Alles auswählen

from time import strftime
tmt = strftime("%a, %d %b %Y %H:%M:%S")
ich erhalte engl. Wochentage.
Wie bekomme ich deutsche Wochentage
l | g
sunnyi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 15. März 2005, 17:38

Nun, Du könntest ein dict anlegen ( d = {eng:de} ) und dann einen gegen den anderen in der Ausgabe austauschen.

Gruß,
Christian
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Dienstag 15. März 2005, 17:40

Naja ein dict anlegen, ist für eine Anfängerin leider noch etwas zu viel.
Ich bin erst noch beim lesen und das ist echt mühsam.

Gibst noch eine andere Möglichkeit, oder wie legt man ein dict an?
l | g
sunnyi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 15. März 2005, 18:09

Hoi Sunny,

mir ist jetzt nicht klar, ob das überhaupt auf direktem Wege geht.

Also, zu der Idee mit den "dict"s (=Wörterbüchern ;-) ): Allgemein geht das so:

Code: Alles auswählen

d = {schluessel1 : wert1 , schluessel2 : wert2 , ...}
In Deinem Fall also:

Code: Alles auswählen

d = {'Sun':'Sonntag','Mon':'Montag','Tue':'Dienstag',...}
Und dann kannst Du in Deiner Variablen "tmt" die Strings gegeneinander ersetzen. Versuche mal, ob Du das hinbekommst. Das ist für den Anfang schon eine kleine Herausforderung. Wenn nicht, hilft man Dir bestimmt noch weiter.

Gruß,
Christian
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 15. März 2005, 18:31

Warum kompliziert, wenn es doch auch einfach geht:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import time, locale

locale.setlocale(locale.LC_ALL, "german")
print "%s" % time.strftime("%a, %d %b %Y %H:%M:%S")
Aber Locales funktionieren nicht immer perfekt, oft trifft das Adjektiv "seltsam" eher zu.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 15. März 2005, 18:40


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Dienstag 15. März 2005, 22:32

Leonidas hat geschrieben:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import time, locale

locale.setlocale(locale.LC_ALL, "german")
print "%s" % time.strftime("%a, %d %b %Y %H:%M:%S")
Aber Locales funktionieren nicht immer perfekt, oft trifft das Adjektiv "seltsam" eher zu.
Vor allem ist es vom Betriebssystem abhängig welche Werte erlaubt sind. Das "german" funktioniert zum Beispiel nicht unter Linux.

Wenn man Python startet, dann wird auf die portable locale "C" umgeschaltet. Wenn man das haben möchte, was das Betriebssystem benutzt, dann sollte man als locale "", also eine Zeichenkette mit der Länge 0 setzten. Das sollte unter allen Betriebssystemen funktionieren.

Der Tip steht auch in der Doku zum 'locale'-Modul.
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Mittwoch 16. März 2005, 07:41

@CM
ich werde es mal mit dict versuchen

@Leonidas
Am Anfang ist man eben kompliziert :)

@Jens
Ich hab mir die Python-Referenz gekauft. Aber bis man das alles gelesen hat - puh

@Blackjack
Wenn etwas nicht unter Linux funktioniert, dann ist das aber sehr schwach. Ich z.B. möchte kein anderes System

So danke @All, Ich werde mich beim nächsten Problem wieder bei Euch melden. :D
l | g
sunnyi
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Mittwoch 16. März 2005, 08:10

So habe Leonidas' Vorschlag umgesetzt und es funktioniert
l | g
sunnyi
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 16. März 2005, 13:48

BlackJack hat geschrieben:Vor allem ist es vom Betriebssystem abhängig welche Werte erlaubt sind. Das "german" funktioniert zum Beispiel nicht unter Linux.

Wenn man Python startet, dann wird auf die portable locale "C" umgeschaltet. Wenn man das haben möchte, was das Betriebssystem benutzt, dann sollte man als locale "", also eine Zeichenkette mit der Länge 0 setzten. Das sollte unter allen Betriebssystemen funktionieren.

Der Tip steht auch in der Doku zum 'locale'-Modul.
Den Code hab ich aus dem etwas älteren Locale saugt Thread. Dort hat aber leider keiner den guten Tipp gegeben... getdefaultlocale() ist immernoch Schrott.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 16. März 2005, 15:39

@Leonidas: Tja, da habe ich wohl den Wald vor lauter Bäumen nicht mehr gesehen. Gut, das Du eingesprungen bist.

Gruß,
Christian
BlackJack

Mittwoch 16. März 2005, 22:52

Leonidas hat geschrieben:getdefaultlocale() ist immernoch Schrott.
Wieso das?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 17. März 2005, 13:35

BlackJack hat geschrieben:
Leonidas hat geschrieben:getdefaultlocale() ist immernoch Schrott.
Wieso das?
Weil es kein locale liefert, das man mit setlocale() setzen kann. Du kannst sagen, da soll man dann "" einsetzen. Klar, nur wozu ist dann getdefaultlocale() wenn man es sowieso nicht braucht? Es liefert bei mir 'de_DE' und 'cp1252', was aber setdefaultlocale() nicht akzeptiert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Donnerstag 17. März 2005, 22:33

Okay, ich habe mich mal ein bischen im Bugtracker umgesehen. getdefaultlocale() scheint ziemlich kaputt zu sein. Wäre nett wenn das auch in der Doku stehen würde. :cry:
Antworten