Was ist der sauberste und pythonischste Weg, um das Date von morgen zu bekommen? Es muss einen besseren Weg, als man auf den Tag an, behandeln Tage am Ende des Monats usw.Sauberste und pythonischste Art, das Datum von morgen zu bekommen?
Antwort
datetime.date.today() + datetime.timedelta(days=1)
sollte den Trick
timedelta
Griff tun kann Tage, Sekunden, Mikrosekunden, Millisekunden das Hinzufügen, Minuten, Stunden oder Wochen.
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2009, 10, 1)
>>> today + datetime.timedelta(days=1)
datetime.date(2009, 10, 2)
>>> datetime.date(2009,10,31) + datetime.timedelta(hours=24)
datetime.date(2009, 11, 1)
Wie in einem Kommentar gefragt, Pose Sprung Tage kein Problem:
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=1)
datetime.date(2004, 2, 29)
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=2)
datetime.date(2004, 3, 1)
>>> datetime.date(2005, 2, 28) + datetime.timedelta(days=1)
datetime.date(2005, 3, 1)
Keine Handhabung von leap seconds tho:
>>> from datetime import datetime, timedelta
>>> dt = datetime(2008,12,31,23,59,59)
>>> str(dt)
'2008-12-31 23:59:59'
>>> # leap second was added at the end of 2008,
>>> # adding one second should create a datetime
>>> # of '2008-12-31 23:59:60'
>>> str(dt+timedelta(0,1))
'2009-01-01 00:00:00'
>>> str(dt+timedelta(0,2))
'2009-01-01 00:00:01'
stopfen.
EDIT - @ Mark: Die docs „ja“ sagen, aber der Code sagt „nicht so viel“:
>>> time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")
(2008, 12, 31, 23, 59, 60, 2, 366, -1)
>>> time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
1230789600.0
>>> time.gmtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 6, 0, 0, 3, 1, 0)
>>> time.localtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 0, 0, 0, 3, 1, 0)
Ich würde denken, dass gmtime oder Lokalzeit den Wert von mktime und gab mir zurücknehmen würde Zurück das ursprüngliche Tupel, mit 60 als die Anzahl der Sekunden. Und dieser Test zeigt, dass diese Schaltsekunden einfach weg verblassen ...
>>> a = time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
>>> b = time.mktime(time.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S"))
>>> a,b
(1230789600.0, 1230789600.0)
>>> b-a
0.0
'time.strftime' behandelt Schaltsekunden: siehe Hinweis 2: http://docs.python.org/library/time.html#time.strftime und Hinweis 3: http://docs.python.org/library/datetime .html # strftime-behavior –
Dies liegt daran, dass die Unix-Zeit keine Schaltsekunden behandelt. Siehe http://en.wikipedia.org/wiki/Unix_time#History, http://www.mail-archive.com/[email protected]/msg00094.html und POSIX selbst. –
"jeden Tag wird genau 86400 Sekunden entfallen" http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15 –
Schon die Basis time
Modul kann damit umgehen:
import time
time.localtime(time.time() + 24*3600)
Die eleganteste Lösung aus allen – Greg
Dies scheitert an den Grenzen der Sommerzeit in den Vereinigten Staaten, weil an diesen Grenzen ein Tag 23 Stunden und ein Tag 25 Stunden haben wird. Dies berücksichtigt auch keine Schaltsekunden. –
@CharlesWood: Diese Antwort kann eine andere Stunde zurückgeben, die (in einigen Zeitzonen) ein ** anderes Datum ** (nicht morgen) zurückgibt, aber es gibt immer die Zeit zurück, die genau 24 Stunden voraus ist (die angenommene Antwort gibt Mitternacht zurück (unbekannte Stunden von jetzt)). Ich sehe nicht, wie Schaltsekunden das Ergebnis hier ändern können, wenn sie nicht während einer Schaltsekunde auf Systemen aufgerufen werden, bei denen 23:59:60 und 00:00:00 den gleichen Zeitstempel haben. – jfs
- 1. Welche Art von Datum Zeitformat ist das?
- 2. Datum Validierung - Wie lokalisieren/übersetzen Strings „heute“ und „morgen“
- 3. Laravel Art Sammlung von Datum
- 4. Wie die Zeit und Datum von dieser Art von Datum 29. August 2011 02.24 Uhr in Java oder Android bekommen
- 5. Wie ermittelt man das Datum von morgen in J2ME für die Verwendung in einem DateField?
- 6. MSBUILD/csc: sauberste Art der Behandlung x64 mscorlib Warnung 1607
- 7. Holen Sie sich das Datum von morgen in MS Word einfügen Feld
- 8. Was ist die pythonischste Art, ein leeres Wörterbuch als Standardargument zu verwenden?
- 9. So ersetzen Sie das Datum mit "sed" durch die Worte "heute" oder "morgen"
- 10. einfachste und sauberste Bootstrap-Layout
- 11. Python 2: Was ist die eleganteste/pythonischste Art, ein Enum mit String-Interpretationen zu machen?
- 12. Wie bekomme ich die Zeilen nach morgen?
- 13. MySQLi CURDATE() heute und 2 Stunden in morgen?
- 14. Wie das Ziel eines schwachen Verweis auf eine sichere Art und Weise zu bekommen
- 15. Javascript: Setze ein neues Datum auf morgen 8:00 Uhr
- 16. Der Versuch, max Datum von Tisch zu bekommen Linq2Sql
- 17. Laravel get Benutzer heute und morgen Geburtstag
- 18. Wie obere Reihe von Datum und Id TSQL bekommen
- 19. einfache Art und Weise Datum Zeit nach Wochennummer in Javascript
- 20. sauberste Art und Weise eine Sammlung durch eine Eigenschaft des Elements zu indizieren, dass ich eine Sammlung
- 21. Sauberste Weise, zum boolean
- 22. iOS: bekommen weekOfMonth von Datum Ausgabe
- 23. Objective C - erhält am nächsten Tag von heute (morgen)
- 24. Sauberste Art auf eine Bedingung in Selenium 2/Java zu warten?
- 25. Python Timedelta Fehler: Überspringen eines Tages, wenn morgen zu bekommen versuchen
- 26. Wie erhalte ich das Datum, wenn ein Datum und Tage von diesem Datum gegeben sind? php
- 27. Schienen - Datum von Datum und Zeitstempel erhalten
- 28. Art mehrdimensionales Array nach Datum
- 29. XSL Art Knoten nach Datum, das Rück ersten Knoten
- 30. MySQL bekommen das Datum vor Tagen als Zeitstempel
Es behandelt Schaltjahre ok? – Rook
@ldigas: ja, tut es. – nosklo