[python-users] strftime und Wochennummer im ISO Format

Christopher Arndt chris.arndt at web.de
Sa Nov 22 14:43:34 CET 2008


Stefan Pampel schrieb:
> Hallo Liste,
> 
> in einer Applikation(wxremind [1]) wird ein Datum über strftime
> formatiert und ausgegeben:

I nehme an, du meinst die "strftime" methode von datetime.date /
datetime.datetime Objekten?

Diese und "time.strftime" basieren auf der gleichnamigen Funktion aus
der Standard C-Bibliothek. Die Python Doku sagt dazu:

"The full set of format codes supported varies across platforms, because
Python calls the platform C library's strftime() function, and platform
variations are common. The documentation for Python's time module lists
the format codes that the C standard (1989 version) requires, and those
work on all platforms with a standard C implementation. Note that the
1999 version of the C standard added additional format codes."

In der Dokumentation des time Moduls sind nur die Formatcodes "%U" und
"%W" genannt, die beide nicht das sind, was du brauchst. Wenn du aber
"man 3 strftime" aufrufst (die entspr. Manpages müssen natürlich
installiert sein), siehst du, welche zusätzlichen Formatcodes deine
C-Library unterstützt.

Auf dem Mac OS X 10.4 an dem ich gerade sitze, gibt es z.B. den
Formatcode %V:

>>> import locale
>>> import time
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
>>> time.strftime('%x KW %V')
'22.11.2008 KW 47'

> Die Frage ist wie bekomme ich das
> _elegant_ zusammen. Aus der Konfigurationsdatei des Programms wird
> übergeben:
> 
> datebarformatstring = '''%a, %b %d %Y (week %W, day %j %Z)'''

Ich denke, ohne ein Änderung des Programs gibt es dazu keine
plattformunabhängige Lösung. Das ist halt mal wieder eine typische
Amerika-zentrierte Altlast von C (ähnlich wie ASCII, von dem wir uns ja
auch erst langsam und sehr zäh verabschieden).

> Ein hemdsärmeliger, eher lösungsorientierter Ansatz ist die Wochennummer
>  von der Ausgabe strftime per Suchen/Ersetzen auszutauschen. Ich denke
> das geht schöner. Hat jemand eine Idee?

Wenn ich irgendetwas auch nur mäßig kompliziertes mit Datumsberechnungen
unter Python zu tun habe, nehme ich immer python-dateutil zur Hand:

http://labix.org/python-dateutil


Chris



Mehr Informationen über die Mailingliste python-users