Wie konvertiert man eine Python datetime.datetime in eine Excel-Seriennummer?

8

Ich muss Daten in Excel-Seriennummern für ein Daten-Munging-Skript konvertieren, das ich gerade schreibe. Durch das Spielen mit Daten in meiner OpenOffice Calc-Arbeitsmappe konnte ich daraus ableiten, dass "1-Jan 1899 00:00:00" auf die Zahl Null abgebildet wird.

Ich habe die folgende Funktion geschrieben, um von einem Python-Datetime-Objekt in eine Excel-Seriennummer zu konvertieren:

%Vor%

Wenn ich jedoch einige Beispieldaten versuche, unterscheiden sich die Zahlen von denen, die ich erhalte, wenn ich das Datum als Zahl in Excel formatiere (gut OpenOffice Calc). Wenn Sie zum Beispiel "2009-03-20" testen, erhalten Sie 3478032000 in Python, während Excel die Seriennummer als 39892 rendert.

Was ist falsch an der obigen Formel?

* Hinweis: Ich verwende Python 2.6.3, habe also keinen Zugriff auf datetime.total_seconds ()

    
Homunculus Reticulli 05.03.2012, 22:08
quelle

3 Antworten

20

Es scheint, dass das Excel-Format "serial date" tatsächlich die Anzahl der Tage seit 1900-01-00 ist, mit einer gebrochenen Komponente, die einen Bruchteil eines Tages darstellt, basierend auf Ссылка . (Ich denke, dieses Datum sollte eigentlich als 1899-12-31 gelten, da es keinen 0. Tag eines Monats gibt)

Es scheint also so zu sein:

%Vor%     
akgood 05.03.2012, 22:22
quelle
7

Obwohl dies für das Excel-Serien-Datumsformat nicht unbedingt relevant ist, war dies der höchste Treffer für das Exportieren von Python-Datum in Excel. Was ich besonders nützlich und einfach gefunden habe, ist einfach exportieren mit strftime.

%Vor%

Dies wird im folgenden Format '06 / 25/14 09:59:29 'ausgegeben, das von Excel als gültiges Datum / Uhrzeit akzeptiert wird und das Sortieren in Excel ermöglicht.

    
JazzyWhit 25.06.2014 14:03
quelle
0

Wenn das Problem darin besteht, dass DATEVALUE () die Seriennummer für Datumsangaben übertreffen soll, kann die Funktion toordinal () verwendet werden. Python-Seriennummern beginnen am 1. Januar des Jahres 1, während Excel ab dem 1. Januar 1900 beginnt, also einen Offset anwenden. Siehe auch Excel 1900 Schaltjahr Bug ( Ссылка )

%Vor%     
rjha94 24.11.2017 18:47
quelle

Tags und Links