Die FPUTCSV -Funktion gibt die Daten in eine Datei in einer von Kommas getrennten Form aus. Da die CSV -Datei im Wesentlichen ein einfaches Textformat ist, werden alle Felder als Zeichenfolgen gespeichert. Wenn wir daher die DateTime -Objekt oder das Feld von PHP direkt in die CSV -Datei schreiben, können wir auf die folgenden Probleme stoßen:
Inkonsistentes Format : Wenn ein anderes System oder ein anderes Programm eine CSV -Datei liest, wird das Format des Feldes Datum und Uhrzeit möglicherweise nicht korrekt identifiziert.
Datenverlust oder Fehler : Einige Datumszeitformate können beim Speichern Präzision verlieren, insbesondere Daten, die Zeitzoneninformationen enthalten.
Um diese Probleme zu vermeiden, müssen das Datum und die Uhrzeitfelder vor dem Schreiben vernünftigerweise formatiert werden.
Beim Schreiben von Feldern, die DateTime mit FPUTCSV enthalten, besteht die häufigste Praxis darin, die Formatmethode des DateTime -Objekts zu verwenden, um DateTime in ein konsistentes Zeichenfolgeformat umzuwandeln. Zum Beispiel ist das ISO 8601 -Format ( YMD H: I: S ) normalerweise eine universelle und hoch kompatible Wahl.
Angenommen, wir haben ein DateTime -Objekt und möchten es in eine CSV -Datei schreiben. Wir können den folgenden Code verwenden:
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>();
</span><span><span class="hljs-variable">$formattedDate</span></span><span> = </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>); </span><span><span class="hljs-comment">// Formatiert wie '2025-07-27 14:45:00'</span></span><span>
</span></span>
Dies formatiert die aktuelle DateTime als eine Zeichenfolge von YJJJ-MM-DD HH: MM: SS .
Wenn das Feld "DateTime" vom Zeichenfolge -Typ ist (z. B. aus der Datenbank erhalten), können wir auch die DateTime :: CreateFromFormat -Methode verwenden, um das Datum zu konvertieren und zu formatieren. Zum Beispiel:
<span><span><span class="hljs-variable">$dateString</span></span><span> = </span><span><span class="hljs-string">'2025-07-27 14:45:00'</span></span><span>;
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>, </span><span><span class="hljs-variable">$dateString</span></span><span>);
</span><span><span class="hljs-variable">$formattedDate</span></span><span> = </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>
Schauen wir uns anschließend an, wie Sie das formatierte Datum und die Uhrzeit in eine CSV -Datei schreiben, wenn Sie FPUTCSV verwenden. Angenommen, wir haben ein Array mit mehreren Feldern, von denen eines ein Feld für DateTime ist.
<span><span><span class="hljs-variable">$data</span></span><span> = [
[</span><span><span class="hljs-string">'Name'</span></span><span>, </span><span><span class="hljs-string">'Date'</span></span><span>, </span><span><span class="hljs-string">'Amount'</span></span><span>],
[</span><span><span class="hljs-string">'John Doe'</span></span><span>, </span><span><span class="hljs-string">'2025-07-27 14:45:00'</span></span><span>, </span><span><span class="hljs-number">1000</span></span><span>],
[</span><span><span class="hljs-string">'Jane Smith'</span></span><span>, </span><span><span class="hljs-string">'2025-07-28 09:30:00'</span></span><span>, </span><span><span class="hljs-number">1500</span></span><span>]
];
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'w'</span></span><span>);
</span><span><span class="hljs-comment">// Schreiben Sie in die Titelzeile</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fputcsv</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]);
</span><span><span class="hljs-comment">// Schreiben Sie Datenzeilen,Und stellen Sie sicher, dass das Datum korrekt formatiert ist</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>) {
</span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>] = (</span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>]))-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>); </span><span><span class="hljs-comment">// Formatdatum Feld</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fputcsv</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$row</span></span><span>);
}
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span></span>
In diesem Beispiel ist die zweite Spalte ( Datum ) ein Datumszeitfeld. Vor dem Schreiben in die Datei format wir das Datum mit der Formatmethode des DateTime -Objekts mit der Formatmethode von YMD H: i: S. Unabhängig davon, welches System Sie die CSV -Datei lesen, bleibt das Datum in einem konsistenten Format und verringert das Problem inkonsistenter Formate.
Zeitzonenproblem : Wenn Ihr Datum und Ihre Uhrzeit Zeitzoneninformationen enthalten, wird empfohlen, das ISO 8601 -Format ( YMD \ th: i: sp ) zu verwenden, wobei P die Zeitzoneninformationen ausgibt. Zum Beispiel: 2025-07-27T14: 45: 00+00: 00 . Stellen Sie sicher, dass die Zeitzone während der Formatierung korrekt behandelt wird, um Probleme zu vermeiden, die durch die Umwandlung von Zeitzonen verursacht werden.
CSV -Datei -Codierung : Stellen Sie sicher, dass beim Speichern der CSV -Datei das richtige Codierungsformat verwendet wird. Die UTF-8-Codierung wird empfohlen, um sicherzustellen, dass Sonderzeichen (wie Chinesisch) korrekt gespeichert werden können.
Überprüfung der Validitätsüberprüfung der Datumszeit : Vor der Formatierung können Sie die Gültigkeit der Datumsstring-Zeichenfolge überprüfen, um ungültige Daten zu vermeiden (z. B. 2025-02-30 ), die Formatierungsfehler verursachen.