读取 CSV 文件 我的日期格式不断变化?



我正在读取一个带有fgetcsv()的纯文本 CSV 文件并从其中一列中提取日期,如下所示:

$visit_date_title = 'SVDT';
while (($data = fgetcsv($this->handle, 2000, ",")) !== false) {
$this->row++;
//Set header columns
if ($this->row == 1) {
if(($visit_date_col = $this->get_column_number($data, $visit_date_title)) === false) break;
$minimum_cols = ($visit_date_col > $minimum_cols) ? $visit_date_col : $minimum_cols;
continue;
}
$this->visitDate = $data[$visit_date_col];
$this->logprintf(__LINE__, "NOTE  : Received >" . $this->visitDate. "<");
}

我使用以下数据...

SVDT,NOTHING
12/11/2019,0
13/11/2019,0
14/11/2019,0
02/12/2019,0

为什么我会得到不同的日期格式,即使只是在阅读文本时?!我看到这个...

2019-12-12T14:57:48+00:00 : [line  376] : NOTE  : Received >2019/12/11<   <===
2019-12-12T14:57:48+00:00 : [line  376] : NOTE  : Received >13/11/2019<
2019-12-12T14:57:48+00:00 : [line  376] : NOTE  : Received >14/11/2019<
2019-12-12T14:57:48+00:00 : [line  376] : NOTE  : Received >2019/02/12<   <===

有没有办法避免这种干预并只获取数据?

您从文件中获得了实际/正确的日期CSV所以没有问题。因此,在获取输出并为visitDate变量分配日期值结束时,您可以格式化标准日期格式,如下所示。希望对您有所帮助

// change date format here
$dateVisited = str_replace("/", "-", $data[$visit_date_col]);
$this->visitDate = date('d/m/Y', strtotime($dateVisited));
$this->logprintf(__LINE__, "NOTE  : Received >" . $this->visitDate. "<");

相关内容

最新更新