2012-04-02 8 views
0

내 XML 웹 서비스가 datetime 매개 변수에 여분의 공간을 보내고 있습니다.배열에 여분의 공간이 추가되었습니다.

Sun Mar 31 02:05:49 2012 GMT 

...하지만 4 월 1 일,이 같은 포맷 받고 :

Sun Apr 1 02:05:49 2012 GMT (Note the extra space between "Apr" and "1") 

문제는 내가 배열을 폭발하고있어 4 월 1 이전은 형식으로오고 있었다 공백 (" ")을 사용하여 [Month] + [Date] + [Year]하지만 이제는 [Month] + [Blank] + [Timestamp]이 표시됩니다.

거꾸로 계산할 배열 함수가 있습니까? [timezone] [year] [timestamp] [date] 등?

감사합니다.

+0

아마 관련 질문 : 즉석에서 [설정 해제 빈 배열 항목 ] (http://stackoverflow.com/questions/2317362/unset-blank-array-items-on-the-fly) – Matthematics

답변

1

당신은

+0

고맙다 Darhazer ... 내가 그것을 시험하게하려고한다 – bobbiloo

+0

그것은 큰 Dar.가 저축을 움직이게했다 – bobbiloo

1

왜 그냥 전체 문자열에 strtotime()를 사용이 구분 하나 이상의 공백을 사용합니다

$array = preg_split('/[\s]+/', $date); 

정규 표현식을 사용하여 분할 할 수 있습니다?

+0

would not 그 성능 저하? – Matthematics

+0

팁 알렉스 주셔서 감사하지만 MSFT 친화적 인 형식으로 이것을 가져 가야합니다. – bobbiloo

+0

@ Lübnah : 누가 신경 써요, 그 영향은 너무 작아서 아무 의미가 없습니다.그러나 현재 OP 메서드와 달리 날짜가 올바르게 구문 분석됩니다. – netcoder

0

array_filter()을 사용하면 FALSE로 평가되는 모든 배열 항목을 제거 할 수 있습니다. 참조 : http://php.net/manual/en/function.array-filter.php

비록 내가 아마도 Darhazer의 해결책을 사용 하겠음에 유의해야한다. 그냥 여기서 array_filter()를 언급하면 ​​을 사용하면 어떤 성능 오버 헤드가 array_filter()과 비교되는지 알 수 없습니다. 당신이 날짜를 구문 분석하려면

1

, strtotime 사용

$time = 'Sun Apr 1 02:05:49 2012 GMT'; 

$month = date('M', $ts); // Apr 
$day = date('j', $ts); // 1 
$year = date('Y', $ts); // 2012 

을 또한 보장 시간이 같이 변경할 수 있습니다 현재 시간대로 변환됩니다 :

date_default_timezone_set('GMT'); 

또 다른를 대안은 strptime을 사용하는 것입니다. 실제로는 구문 분석 날짜으로 생성되었지만 고려해야 할 시간대는 사용하지 마십시오.

$parsed = strptime($time, '%c'); 
1

Alex Howansky가 제안했듯이 일부 날짜/시간 구문 분석 기능을 사용해야합니다. 그런 다음 원하는 형식으로 출력 할 날짜를 날짜() 또는 날짜 시간 :: 형식()를 사용할 수 있습니다

$formatA = 'Sat Mar 31 02:05:49 2012 GMT'; 
$formatB = 'Sun Apr 1 02:05:49 2012 GMT'; 

var_dump(
    new DateTime($formatA), 
    new DateTime($formatB), 
    date('Y-m-d H:i:s', strtotime($formatA)), 
    date('Y-m-d H:i:s', strtotime($formatB)) 
); 

출력 :

object(DateTime)#1 (3) { 
    ["date"]=> 
     string(19) "2012-03-31 02:05:49" 
    ["timezone_type"]=> 
     int(2) 
    ["timezone"]=> 
     string(3) "GMT" 
} 

object(DateTime)#2 (3) { 
    ["date"]=> 
     string(19) "2012-04-01 02:05:49" 
    ["timezone_type"]=> 
     int(2) 
    ["timezone"]=> 
     string(3) "GMT" 
} 

string(19) "2012-03-31 04:05:49" 

string(19) "2012-04-01 04:05:49" 
관련 문제