2017-09-15 1 views
0

문자열에서 날짜 배열의 형식을 DateTime으로 변환하는 효율적인 방법이 있습니까?배열을 문자열에서 datetime으로 변환

날짜 형식의 배열과 문자열 형식의 날짜 배열 (예 : "2017-01-01")이 있습니다. "array_intersect"를 사용하여 각 배열의 레코드를 확인해야하지만 둘 다 작동해야하는 DateTime 형식이어야합니다.

+0

이용하여 array_walk() (http://php.net/manual/en/function.array- 아마도 walk.php)? –

+0

@ MarkBaker ITYM'array_map()'- 더 일반적으로 원래 배열을 돌연변이 화하지 않는 것이 더 좋다. – Alnitak

답변

0

당신은 너무 같은 문자열을 변환 할 수 있습니다 ... 실제로 배열 내의 객체의 문자열 값을 비교 array_intersect 때문에

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

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

+0

이 좋아 보인다 .. ($ myArray, function ($ value) {$ value = new DateTime ($ value);}) .하지만 $ dateStrings 및 $ dateString 및 $ dates는 무엇을 나타 냅니까? –

+0

$ dateStrings는 문자열 형식의 날짜 배열입니다. $ dates는 기존 DateTime 배열과 교차 할 수있는 dateTime 형식 요소의 결과 배열입니다. –

0

, 나는 다른 방법으로 주위를 변환하는 것입니다 : 날짜 시간에서 문자열에. 다음이 보일 수 :

<?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)