1

CSV ファイルを自動的にダウンロードする PHP スクリプトを作成しています。

Web ブラウザー (サファリ) から手動で URL にアクセスし、ファイルをダウンロードして MS Excel で開くと、列 A と D (それぞれ日付と時刻) が期待どおりにフォーマットされます。たとえば、「12-Sep-16」です。および「午後 3:00:30」。ただし、以下の PHP スクリプトを実行すると:

$url_="";

$filename="File.csv";

file_put_contents('/home/file/path' . $filename, file_get_contents($url));

ファイルがダウンロードされ、「Mon Sep 12 00:00:00 EDT 2016」および「Mon Sep 13 10:00:30 EDT 2016」のようにフォーマットされている列 A と D を除いて、コンテンツは問題ありません。

私のサーバーのタイムゾーンは「ヨーロッパ/ロンドン」に設定されています。

明らかに file_get_contents(); のいずれかです。file_put_contents(); 何かを変えています。これを解決する方法を知っている人はいますか?

4

2 に答える 2

1

いかなる方法でもコンテンツを変更しfile_get_contentsたり変更したりしないでください。file_put_contents

これは、Excel の表示形式が異なるだけです。Excel はタイムスタンプを任意の形式で読み取り、解釈して、既定の形式または指定した形式で表示します。


Firefox でファイルをダウンロードして保存すると、実際には日付が異なります (2016 年 9 月 13 日、午後 3:00:31)。

その後、wget でファイルをダウンロードし、再度 curl でダウンロードしました。Firefox でダウンロードする場合を除いて、PHP と同じ日付/時刻形式 (Tue Sep 13 00:00:00 EDT 2016、Tue Sep 13 10:00:31 EDT 2016) を取得するたびに。

したがって、Firefox が原因であると思われます。おそらく、Firefox は MIME タイプを見て、何らかの方法でコンテンツを解釈することを決定します。

于 2016-09-13T20:11:50.340 に答える