2016-12-20 11 views
1

ich mehrere Datetime-Objekte haben, zum Beispiel:hinzufügen oder Zeit Datumzeit ändern Objekt

>>a 
datetime.datetime(2009, 11, 1, 0, 0) 

ich dem Laufenden halten wollen unverändert und ändern Zeit zu Nullen (drei Ziffern in der Zeit):

>>b 
datetime.datetime(2009, 11, 1, 0, 0, 0) 

Wahrscheinlich einfach, aber ich kann es nicht herausfinden

EDIT: Aus irgendeinem Grund wird eine Null für Sekunden nicht arbeiten. Es spielt keine Rolle, es funktioniert mit einem 1:

>>a 
datetime.datetime(2009, 11, 1, 0, 0) 
>>b = datetime.datetime.combine(a.date(), datetime.time(0,0,0)) 
>>b 
datetime.datetime(2009, 11, 1, 0, 0) 
>>b = datetime.datetime.combine(a.date(), datetime.time(0,0,1)) 
>>b 
datetime.datetime(2009, 11, 1, 0, 0, 1) 
+0

Ich verstehe es nicht: 'datetime.datetime (2009, 11, 1, 0, 0) == datetime.datetime (2009, 11, 1, 0, 0, 0) ' –

+1

Sind es nicht die gleichen zwei oder drei Nullen in der Datenzeit? – Fomalhaut

Antwort

2

es ein bisschen knifflig ist, aber Sie können combine verwenden:

b = datetime.datetime.combine(a.date(), datetime.time(0,0,0)) 
+0

Aus irgendeinem Grund wird die letzte Null in der Zeit weggelassen. Aber wenn ich 1,1,1 in der Zeit verwende, bekomme ich alle Drei. – BERA

+0

Können Sie erklären, warum Sie sich um die dritte Null kümmern? –

+0

Ich versuche, einen Pandas-Datenrahmen aus einer Tabelle zu erstellen, aber beim Importieren der Datumsangaben wird der Typ in Objekt geändert. Ein anderes Datumsfeld mit dem Format datetime.datetime (2016, 6, 21, 9, 7, 38) wird nicht in Object geändert. Also ich versuche herauszufinden, warum – BERA

2
import datetime 
date_with_zeros = datetime.datetime(2009, 11, 1, 1, 0, 0).replace(hour=0, minute=0, second=0) 

Verwenden Sie einfach ersetzen.

0

datetime.datetime(2009, 11, 1, 0, 0) und datetime.datetime(2009, 11, 1, 0, 0, 0) erstellen Sie die gleichen Datetime-Objekte. Details finden Sie unter https://docs.python.org/2/library/datetime.html#datetime.datetime.

Wenn Sie nicht Null Stunden, Minuten oder Sekunden können Sie replace verwenden, um sie Null zu machen:

dt = datetime.datetime(2009, 11, 1, 3, 15, 49) 
dt.replace(hour=0, minute=0, second=0) 
Verwandte Themen