Seite 1 von 1

[solved] Alternative zu mx.DateTime.RelativeDateTime()?

Verfasst: Mittwoch 26. November 2008, 09:49
von bake
Hi,
die RelativeDateTime Funktion ist ja noch nicht wirklich ausgereift. Gibt es funktionierende Alternativen? Habe das Problem, dass ich zu verschiedenen Daten eine gewisse Anzahl an Monaten rechnen möchte, RDT aber schlicht und einfach falsche Ergebnisse liefert...

Beispiel:

Code: Alles auswählen

>>> print mx.DateTime.now()
2008-11-26 09:48:01.49
>>> print mx.DateTime.now() + mx.DateTime.RelativeDateTime(month=+1)
2008-01-26 09:48:09.33
>>> print mx.DateTime.now() + mx.DateTime.RelativeDateTime(month=+11)
2008-11-26 09:48:17.12

Verfasst: Mittwoch 26. November 2008, 10:30
von helduel
Moin,

da scheint die Doku falsch zu sein:
| Adding RelativeDateTime instances to DateTime instances will
| return DateTime instances with the appropriate calculations
| applied, e.g. to get a DateTime instance for the first of next
| month, you'd call now() + RelativeDateTime(months=+1,day=1).
Hier wird suggeriert, dass man mit "+x" x Monate hinzuaddiert, während mit nur "x" direkt den Monat (bzw. Tag) setzt. Das stimmt aber nicht. Python erkennt keinen Unterschied zwischen +1 und 1:

Code: Alles auswählen

>>> +1 is 1
True
Was du tun kannst ist folgendes:

Code: Alles auswählen

>>> print DateTime.now() + DateTime.RelativeDateTime(month=DateTime.now().month + 1, day=1)
2008-12-01 10:19:29.08
Gruß,
Manuel

Verfasst: Mittwoch 26. November 2008, 11:35
von bake
Vielen Dank für die schnelle Hilfe. Funktioniert mit deinem Beispiel wunderbar! :)