FPUTCSV 함수는 데이터를 쉼표로 구분 된 양식의 파일로 출력합니다. CSV 파일은 본질적으로 일반 텍스트 형식이므로 모든 필드는 문자열로 저장됩니다. 따라서 DateTime을 포함하는 PHP의 DateTime 객체 또는 필드를 CSV 파일에 직접 작성하면 다음과 같은 문제가 발생할 수 있습니다.
일관되지 않은 형식 : 다른 시스템 또는 프로그램이 CSV 파일을 읽는 경우 날짜 및 시간 필드의 형식이 올바르게 식별되지 않을 수 있습니다.
데이터 손실 또는 오류 : 일부 날짜 시간 형식은 저장 될 때 정밀도를 잃을 수 있습니다. 특히 시간대 정보가 포함 된 날짜.
이러한 문제를 피하려면 작성하기 전에 날짜 및 시간 필드를 합리적으로 포맷해야합니다.
fputcsv를 사용하여 DateTime을 포함하는 필드를 작성할 때 가장 일반적인 관행은 DateTime 객체의 형식 메소드를 사용하여 DateTime을 일관된 문자열 형식으로 변환하는 것입니다. 예를 들어, ISO 8601 형식 ( YMD H : I : S )은 일반적으로 보편적이고 호환되는 선택입니다.
DateTime 객체가 있고 CSV 파일에 작성하려면 다음 코드를 사용할 수 있습니다.
<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">// 형식으로 '2025-07-27 14:45:00'</span></span><span>
</span></span>
이것은 현재 dateTime을 YYYY-MM-DD HH : MM : SS 의 문자열로 형식화합니다.
DateTime 필드가 문자열 유형 인 경우 (예 : 데이터베이스에서 얻은) DateTime :: CreateFromFormat 메소드를 사용하여 날짜를 변환하고 형식화 할 수도 있습니다. 예를 들어:
<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>
다음으로 FPUTCSV를 사용할 때 형식화 된 날짜와 시간을 CSV 파일에 작성하는 방법을 살펴 보겠습니다. 여러 필드가있는 배열이 있다고 가정 해 봅시다. 그 중 하나는 DateTime 필드입니다.
<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">// 제목 줄에 쓰십시오</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">// 데이터 행을 작성하십시오,날짜가 올바르게 형식화되어 있는지 확인하십시오</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">// 형식 날짜 필드</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>
이 예에서 두 번째 열 ( 날짜 )은 날짜 시간 필드입니다. 파일에 쓰기 전에 DateTime 객체의 형식 메소드를 사용하여 날짜를 YMD H : I : S 양식으로 포맷합니다. 이러한 방식으로 CSV 파일을 읽는 시스템에 관계없이 날짜는 일관된 형식으로 유지되어 일관되지 않은 형식의 문제를 줄입니다.
시간대 문제 : 날짜와 시간에 시간대 정보가 포함 된 경우 ISO 8601 형식 ( YMD \ TH : I : SP )을 사용하는 것이 좋습니다. 여기서 P는 시간대 정보를 출력합니다. 예 : 2025-07-27T14 : 45 : 00+00 : 00 . 시간대 변환으로 인한 문제를 피하기 위해 서식 중에 시간대를 올바르게 처리하십시오.
CSV 파일 인코딩 : CSV 파일을 저장할 때 올바른 인코딩 형식이 사용되는지 확인하십시오. UTF-8 인코딩은 특수 문자 (예 : 중국어)를 올바르게 저장할 수 있도록 권장됩니다.
날짜 시간 유효 점검 : 서식하기 전에 형식 오류를 일으키는 잘못된 날짜 (예 : 2025-02-30 )를 피하기 위해 날짜 시간 문자열의 유효성을 확인하는 것이 가장 좋습니다.