2017-06-23 3 views
0

Wenn ich 41:30:00 in eine Zelle von Excel einfügen, mit "General" -Format Option ausgewählt, gibt es mir diese Dezimalzahl: 1,729166667Konvertieren [h]: mm: ss; @ Format in Excel-Nummer

Wie erreiche ich diese Dezimalstelle durch PHP (Formel)?

Ich meine, ich möchte die Zelle mit dem Wert von 1,729166667, nicht 41:30:00 (PHPExcel), weil ich Probleme mit der Formatierung und in der Lage, es als Wert in der Excel-Datei lesen .

+0

Wenn Sie PHPExcel verwenden, dann schauen Sie sich die Methoden in PHPExcel_Shared_Date für zwischen Menschen lesbaren/Unix-Zeitstempel/Datetime-Objekt konvertieren/Excel serialized timestamp –

Antwort

0

Ich habe es gerade herausgefunden. Die in diesem Fall aus einer bestimmten Zeit generierte Zahl wird als Bruchteil von 24 Stunden dargestellt.

Also, 12:00:00 wird 0,5 und so weiter.

Ich konvertierte die Zahl in Sekunden, dann dividiert durch 86400, was 24 Stunden in Sekunden ist.

Auch verwendet, um dieses benutzerdefinierte Format für PHPExcel die Zeit korrekt angezeigt werden:

$objPHPExcel->setActiveSheetIndex(0)->getStyle('C'.$row_start.':E'.$row) 
             ->getNumberFormat()->setFormatCode('[h]:mm:ss;@'); 
+0

Um etwas genauer zu sein, wenn Sie H: m: s in Excel einfügen, nimmt es den 1. Januar 1900 plus den H: m: s-Abschnitt an. Die Zahl, die angezeigt wird, stellt die Anzahl der Tage und des Teils der Tage vom 0. Januar 1900 seltsamerweise dar. Wenn Sie beispielsweise den 2. Januar 1900 mit dem Format "Allgemein" konvertieren, erhalten Sie 2,5. Wenn Sie nur an dem Teil Zeit interessiert sind, können Sie die Nummer vor dem Zeitraum löschen. – TBowman

Verwandte Themen