에서 (테스트 스크립트를 작성하지 않고) 그것을 테스트 할 수 있습니다. 자신의 예제 형식에서는 어떤 숫자가 어떤 날짜 증가분인지 알 수있는 방법이 없습니다.
strtotime()의 승인 된 형식을 볼 수 있으며 모든 공급 업체에서 인식하는 형식을 사용하는 경우 운이 좋습니다. 없는 경우에, 최고의 당신이 정말로은 "vendor" => "format"
의 조회 테이블을 만드는 것입니다 수 있습니다 그리고 당신은 date_parse_from_format()
편집 사용할 수 있습니다) (아래 주석을 기반으로 *이 여기 date_parse_from_format의 근사치의 PHP4 버전입니다 요구 사항이
function date_parse_from_format($format, $date) {
$dMask = array('H'=>'hour','i'=>'minute','s'=>'second','y'=>'year','m'=>'month','d'=>'day');
$format = preg_split('//', $format, -1, PREG_SPLIT_NO_EMPTY);
$date = preg_split('//', $date, -1, PREG_SPLIT_NO_EMPTY);
foreach ($date as $k => $v) {
if ($dMask[$format[$k]]) $dt[$dMask[$format[$k]]] .= $v;
}
return $dt;
}
을 *에 맞게해야 기본적으로 당신은 형식은 날짜 문자열의 각 문자가 무엇을 나타내는 마스크입니다
vendor => format
의 조회 테이블이 필요합니다.
참고 : 각 날짜/시간 단위로 사용되는 마스크는 PHP의 일반 date() 문자열 형식에서 사용되는 마스크를 정확하게 반영하지 않습니다. 이것은 단순화되어 있으며 사용자 정의 문자열의 각 개별 문자를가립니다.
예 :
/*
lookup table for vendors
for EVERY character you want to count as a date/time
increment you must use the following masks:
hour : H
minute : i
second : s
year : y
month : m
day : d
*/
$vendorDateFormats = array(
'vendor1' => 'yyyymmdd',
'vendor2' => 'mmddyyyy',
'vendor3' => 'ddmmyyyy',
'vendor4' => 'yyyy.mm.dd HH:ii:ss'
);
// example 1:
echo "<pre>";
print_r(date_parse_from_format($vendorDateFormats['vendor2'],'03232011'));
// example 2:
echo "<pre>";
print_r(date_parse_from_format($vendorDateFormats['vendor4'],'2011.03.23 12:03:00'));
출력 : 중복의
Array
(
[month] => 03
[day] => 23
[year] => 2011
)
Array
(
[year] => 2011
[month] => 03
[day] => 23
[hour] => 12
[minute] => 03
[second] => 00
)
정렬 http://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm- yyyy-format – Brad