PHP file_get_contents/file_put_contents修改CSV的日期格式


PHP file_get_contents/file_put_contents changing date format of CSV

我正在编写一个PHP脚本来自动下载CSV文件。

当我从web浏览器(safari)手动访问URL并下载文件并在MS Excel中打开它时,列A和D(分别为日期和时间)的格式如我所期望的,例如:'12 sep -16'和'3:00:30 pm'。但是,当我运行下面的PHP脚本时:

$url_="";
$filename="File.csv";
file_put_contents('/home/file/path' . $filename, file_get_contents($url));

文件下载,除了A & &;D,格式如下'Mon Sep 12 00:00:00 EDT 2016'和'Mon Sep 13 10:00:30 EDT 2016'。

我的服务器时区设置为'Europe/London'。

file_get_contents();用file_put_contents ();正在改变一些东西。有人知道我怎么解决这个问题吗?

file_get_contentsfile_put_contents均未以任何方式修改内容。

这只是Excel中不同的显示格式。Excel以任何格式读取时间戳,对其进行解释,并以某种默认格式或您指定的格式显示时间戳。


当我用Firefox下载并保存文件时,日期确实不同(13 sep -2016, 3:00:31 PM)。

之后,我用wget下载文件,然后再用curl下载。每次我得到与PHP相同的日期/时间格式(星期二9月13日00:00:00 EDT 2016,星期二9月13日10:00:31 EDT 2016),除了当我用Firefox下载。

所以我宁愿怀疑火狐是罪魁祸首。也许Firefox会查看mime类型并决定以某种方式解释内容

我可以通过在file_get_contents()中包含标题细节来解决这个问题,如下所示:

$url = "";
$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en'r'n" .
              "Cookie: foo=bar'r'n" .  // check function.stream-context-create on php.net
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10'r'n" // i.e. An iPad 
  )
);
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);