PHP file_get_contents / file_put_contents更改CSV的date格式

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

当我从networking浏览器(safari)手动访问URL并下载文件并在MS Excel中打开它时,列A和D(分别为date和时间)的格式与我所预期的相同,例如'12 -Sep-16'和“下午3点半”。 但是,当我运行下面的PHP脚本时:

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

文件下载,除A,D栏外,内容还不错,格式如下:“9月12日星期一00:00:00 EDT 2016”和“2016年9月13日10:00:30 EDT”。

我的服务器时区设置为“欧洲/伦敦”。

显然无论file_get_contents(); file_put_contents(); 正在改变一些事情 有谁会碰巧知道我该如何解决这个问题?

file_get_contentsfile_put_contents都不以任何方式修改内容。

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


当我用Firefox下载和保存文件时,date确实不同(13-Sep-2016,3:00:31 PM)。

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

所以我宁愿怀疑,Firefox是罪魁祸首。 也许火狐看着mimetypes,并决定以某种方式解释内容。

我能够通过在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" // ie An iPad ) ); $context = stream_context_create($options); $file = file_get_contents($url, false, $context); 
Interesting Posts