使用codeigniter在CSV文件中以奇怪的方式出现日期格式
Posted
技术标签:
【中文标题】使用codeigniter在CSV文件中以奇怪的方式出现日期格式【英文标题】:Date format coming in weird way in CSV file using codeigniter 【发布时间】:2017-01-24 14:12:38 【问题描述】:我有一个 codeigniter 函数来为数据库中的用户数据创建一个 CSV 文件。
我的功能是这样的:-
function user_CSV()
$filename = 'CSV_User_Report.csv';
$this->load->dbutil();
$this->load->helper('file');
$this->load->helper('download');
$delimiter = ",";
$newline = "\r\n";
$queryUser = "SELECT user_name AS Name,
user_username AS Username,
user_mobile AS Mobile,
DATE_FORMAT( user_added_date, '%d-%m-%Y' ) AS `Joining Date`,
DATE_FORMAT( user_last_activity, '%d-%m-%Y' ) AS `Last Acitivity`
FROM tbl_user";
$dataResult = $this->db->query($queryUser);
if($dataResult->num_rows()>0)
$data = $this->dbutil->csv_from_result($dataResult, $delimiter, $newline);
if(force_download($filename, $data))
redirect('admin/user');
现在,这个正在创建 CSV 文件。但是有一个严重的问题。为了说明这一点,我分享了 CSV 的屏幕截图。
如您所见,有些加入日期采用 dd/m/YYYY 格式,有些采用 dd-mm-YYYY 格式。
但是,当我试图在 phpmyadmin 中查看查询时,我得到的结果如下:-
为什么 CSV 数据的日期格式显示如此不一致? 我做错了什么?
【问题讨论】:
有没有可能只是 Excel 显示问题?如果你格式化这些单元格以正确显示日期会发生什么,如果你在文本编辑器、记事本或记事本++中打开文件,日期在 csv 中的外观如何? 【参考方案1】:在没有真正查看您的代码的情况下,我有根据的猜测是,您的电子表格软件假定日期采用美国格式 (MM-DD-YYYY),因此它做了两件事:
如果 day 小于等于 12,则会误读日期并交换日期和月份 如果 day 大于 13,则认为它不是有效日期并显示为字符串CSV 是一种非常松散的格式,不提供任何格式化日期的标准方法。但是我建议像 YYYY-MM-DD 这样的东西。
【讨论】:
是的,你是对的。这是由于软件遵循的美式格式。我提出的解决方案是以'%d-%M-%Y'
格式获取日期。这解决了问题。以上是关于使用codeigniter在CSV文件中以奇怪的方式出现日期格式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 codeigniter 导入 CSV 文件并将数据插入到多个表中?