2009-07-22 4 views
1

나는 strtotime 함수와 함께 date 함수를 사용하여 날짜를 포맷합니다.날짜 지정 문제, strtotime 함수로 날짜 함수를 사용할 때

예 :

<?php 
$input_date = '03-JUL-09 14:53'; 

$formatted_date = date("Y-m-d H:i:s", strtotime($input_date)); 

echo $formatted_date; 
?> 

나에게 예상되는 출력을 제공합니다 : 2009-07-03 14시 53분 0초

동안 입력 (나는 분 부분을 제거하고)로 변경하는 경우 -

<?php 
$input_date = '03-JUL-09 14'; 

$formatted_date = date("Y-m-d H:i:s", strtotime($input_date)); 

echo $formatted_date; 
?> 

출력은 여기에 전혀 예상되지 않는다 1970-01-01 5시 30분 0초이다.

내가하고있는 실수는 무엇이며 어떻게 고칠 수 있는가?

감사

미트

답변

1

strtotime()이 두 번째 날짜 문자열에서 어떤 숫자인지 판단 할 수없는 것처럼 보입니다.

가장 좋은 조언은 strtotime()에 전달하기 전에 날짜 - 시간 값을 표준화하는 것입니다. 이 같은 간단한 뭔가가 충분히

if (false === strpos($input_date, ':')) 
{ 
    $input_date .= ':00'; 
} 
0

1970-01-01 (예를 들어 ctime에서) 일반적인 기준 날짜입니다. 나는 출력이 0의 값을 날짜로, 따라서 1970, 그리고 관련이없는 05:30:00 시간으로 포맷한다고 믿습니다.

나는 이것이 요청 된 시간 요소를 모두 포함하지 않는 날짜를 형식화하려고 시도한 결과라고 생각합니다. 완전한 날짜 입력을 생성하기 위해 날짜 데이터를 채울 수 있습니까?

0

strtotime()은 분 부분을 제거 할 때 두 번째 문자열을 구문 분석하지 못합니다. 여분의 "14"가 무엇을 의미하는지 알 수 없으므로 bool(false)을 반환합니다. date(false)을 호출하면 date(0)과 같은 결과를 반환합니다. 즉, 현지 시간대에 맞게 1970 년 1 월 1 일 00:00:00 GMT로 유닉스 에포크의 날짜를 제공합니다.

1

03 - 7 월 09 (14)가 유효한 날짜 문자열 될 것 같지 않습니다 수 있습니다, 03 - 7 월 09 14:00 PHP 매뉴얼에서

잘 작동 : 한 strtotime를 - 유닉스 타임 스탬프

2

1970-01-01 5시 30분 0초에 대한 영어 텍스트 날짜 설명을 구문 분석하는 것은 1970-01-01 00:00 유닉스 시대 (인도의 시간입니다 : 00 GMT/UTC). 이는 strtotime0 또는 false 중 하나를 반환하고 0date으로 변환했음을 의미합니다. 이것은 다른 사람들이 설명했듯이 입력을 처리 할 수 ​​없기 때문입니다.

2

strtotime 함수는 미국 영어 날짜 형식을 포함하는 문자열이 주어지기를 기대하며이 형식을 유닉스 타임 스탬프로 구문 분석하려고합니다.당신은 2 일 4시간

  • 2009년 7월 3일
  • 지금
  • 09-07-03
  • 09-07-03 14시 0분 0초
  • 일주와 같은 문자열을 사용할 수 있습니다 이초
  • 지난 월요일

하지만 "09-07-03 14"와 같은 불완전한 날짜 형식. 파서는 그것을 이해하지 못하고 아무 것도 반환하지 않으므로 date("Y-m-d H:i:s", strtotime($input_date));을 호출하면 0 타임 스탬프 (1970 년 1 월 1 일 00:00:00 UTC)가 반환되므로 기본값이됩니다.

구문 분석 할 수있는 올바른 문자열을 지정해야합니다.

+0

감사합니다. 모두들 .. – Amit