我一直在阅读有关PHP如何解释日期的信息,尤其是在使用/
或-
时。因此,这让我有些困惑。我正在读取CSV文件,并将其转换为数组。我的数组csvData
具有以下数据结构。
0 => array:3 [
"ID" => "10338"
"Date" => "19/08/2011"
"Value" => "30"
]
因此,每个数组元素都包含一个ID
,Date
和Value
。现在,我专注于Date元素,可以像这样访问
foreach ($this->csvData as $rowIndex => $csvValues) {
var_dump($csvValues[$this->dateCol]);
}
这是我不确定的部分。我需要验证此日期,并确保其格式为dd/mm/yyyy
。我不知道日期的原始格式是什么,它实际上可以是任何格式。可能是美国格式,例如我什至看到过类似2010-04-10T00:00:00Z
的东西。
总体目标是尝试(也许)检测格式,然后将其转换为所需的格式。此外,如果日期格式完全无法辨认,或者例如为空,则我想从数组中删除整个元素。不过,这部分应该很简单。
我现在的主要问题是处理日期然后将其转换为正确格式的最佳方法是什么?我已经尝试过strtotime
,但是当我输出该值时,它返回了false。
谢谢
答案 0 :(得分:1)
DateTime类几乎可以处理任何日期格式。它将适合您的目标。 DateTime class constructor带有$string
,日期和$timezone
。您不必担心时间只是约会,所以应该没事。
foreach ($this->csvData as $rowIndex => $csvValues) {
//datetime class will parse that string into something php can understand
$datetime = new DateTime($csvValues[$this->dateCol]);
//you might have to look into the correct parameters here for the format you want
$formatted_date = $datetime->format('d/m/Y')
}