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:

 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.

  • Verhindern, dass RAM vom Paging zum Swap-Bereich (mlock)
  • Wie man ein Python-Skript portabel ausführt, ohne seinen vollständigen Pfad anzugeben
  • Gibt es sowieso, um stat Informationen wie mtime oder ctime manuell in Python oder irgendeine Sprache überhaupt zu ändern?
  • Zitat POSIX Shell Sonderzeichen in Python Ausgabe
  • Whoami in python [duplizieren]
  • Wie kann ich eine Low-Level-E / A auf der Linux-Gerätedatei in Python ausführen?
  • Datei zum Lesen / Schreiben öffnen, bei Bedarf erstellen
  • Python: "import posix" Frage
  • 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.