Wie kann ich POSIX-Werte für gestern und heute um Mitternacht in Python generieren?

Ich habe gekämpft, um zu bestimmen, wie ich einen POSIX (UNIX) Zeitwert für heute und gestern (Mitternacht) über Python generieren kann. Ich habe diesen Code erstellt, aber stolpern damit, wie man sie in einen POSIX-Wert umwandelt:

from datetime import datetime, timedelta import time today_string = datetime.now().strftime('%Y-%m-%d 00:00:00') yesterday_string = (datetime.now() - timedelta(0)).strftime('%Y-%m-%d 00:00:00') today = datetime.strptime(today_string, '%Y-%m-%d %H:%M:%S') yesterday = datetime.strptime(yesterday_string, '%Y-%m-%d %H:%M:%S') print time.mktime(today).timetuple() 

Dieser Code ergibt eine Ausnahme:

  • Wie man Zeit Datum Periode Informationen aus rohen Sätzen in Python zu extrahieren
  • Python-konvertierung datetime in os.utime verwendet werden
  • Zeitzonen-Offset-Zeichen umgekehrt von Python dateutil?
  • Das heutige Datum in JJJJ-MM-DD in Python?
  • Pandas - Python, Löschen von Zeilen basierend auf Datum Spalte
  • Probleme mit datetime.strptime ()
  •  TypeError: argument must be 9-item sequence, not datetime.datetime 

    An diesem Punkt bin ich bei meinem Verstand. Jede mögliche Hilfe, die Sie zur Verfügung stellen können, wird geschätzt.

    3 Solutions collect form web for “Wie kann ich POSIX-Werte für gestern und heute um Mitternacht in Python generieren?”

    Sie sollten die timetuple() Methode auf das today Objekt anwenden, nicht auf das Ergebnis von time.mktime(today) :

     >>> time.mktime(today.timetuple()) 1345845600.0 

    Übrigens, ich bin falsch oder yesterday wird es gleich in deinem Code?

    Edit: Um die POSIX Zeit für heute zu erhalten, kannst du einfach:

     time.mktime(datetime.date.today().timetuple()) 

    @Bakuriu ist hier genau richtig. Aber du machst das überkomplex.

    Schau dir das an:

     from datetime import date, timedelta import time today = date.today() today_unix = time.mktime(today.timetuple()) yesterday = today - timedelta(1) yesterday_unix = time.mktime(yesterday.timetuple()) 

    Da das Datumsobjekt keine Zeit hat, setzt es es zur Mitternacht zurück.

    Du könntest auch den letzten Teil durch:

     yesterday_unix = today_unix - 86400 

    Aber beachten Sie, dass es nicht korrekt über Sommerzeit-Schalter (dh Sie werden am Ende mit 1 Uhr oder 23 Uhr) funktionieren.

    Einen Unix-Zeitstempel aus einem datetime-Objekt als String und als float erhalten:

     datetime.now().strftime('%s') '1345884732' time.mktime(datetime.now().timetuple()) 1345884732.0 
    Python ist die beste Programmiersprache der Welt.