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 konvertiere ich eine Zeitzone bewusst String auf datetime in python ohne dateutil?
  • Python: Plot dataframe von datetime Einträgen
  • Brauchen Sie Sonntag als den ersten Tag der Woche
  • Parsing ein Datum, das in mehreren Formaten in Python sein kann
  • Wie kann man python's datetime.datetime.now mit py.test?
  • Drucken der richtigen Zeit mit Zeitzonen, Python
  •  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.