将数组从字符串转换为datetime

时间:2017-09-15 15:59:37

标签: php datetime

是否有一种有效的方法将日期数组的格式从字符串转换为DateTime?

我有一个DateTimes数组和一个字符串格式的日期数组(即“2017-01-01”)。我需要使用“array_intersect”来确定每个数组中的哪些记录匹配,但它们必须都是DateTime格式才能生效。

2 个答案:

答案 0 :(得分:0)

您可以像这样转换字符串......

foreach($dateStrings as $dateString){
    $dates[] = DateTime::createFromFormat('Y-m-d', $dateString);
}

http://php.net/manual/en/datetime.createfromformat.php

答案 1 :(得分:0)

由于array_intersect实际上比较了数组中对象的字符串值,我会反过来转换:从DateTime到string。这可能如下所示:

<?php

// Suppose you have these DateTime objects
$toConvert = [
    DateTime::createFromFormat('Y-m-d', '2012-04-22'),
    DateTime::createFromFormat('Y-m-d', '2012-05-10'),
    DateTime::createFromFormat('Y-m-d', '2013-06-03'),
];

$dateStrings1 = ['2012-04-22', '2012-05-10', '2015-05-05'];

$dateFormat = 'Y-m-d';

// Convert the array of DateTime objects to strings
$dateStrings2 = array_map(function($dateTime) use ($dateFormat) {
    return $dateTime->format($dateFormat);
}, $toConvert);

$intersection = array_intersect($dateStrings1, $dateStrings2);

var_dump($intersection);

这个输出是:

array (size=2) 0 => string '2012-04-22' (length=10) 1 => string '2012-05-10' (length=10)