strtotime ('03 January, 2010')은 GMT + 5 : 30에서 1230993600을 반환합니다.잘못된 결과를 반환하는 PHP strtotime
this에 따르면 유닉스 타임 스탬프 1230993600은 입니다. 그래서 1 년 후입니다.
PHP 5.2.6 및 5.2.11에서 발생합니다.
strtotime ('03 January, 2010')은 GMT + 5 : 30에서 1230993600을 반환합니다.잘못된 결과를 반환하는 PHP strtotime
this에 따르면 유닉스 타임 스탬프 1230993600은 입니다. 그래서 1 년 후입니다.
PHP 5.2.6 및 5.2.11에서 발생합니다.
문제는 날짜 문자열에 ,
입니다.
2010-01-03 00:00:00
:
로, 당신의 문자열에 시간 요소에서 날짜를 분리
echo date('Y-m-d H:i:s', strtotime('3rd January 2010'));
이 (,
제거) 정확한 날짜를 반환
2009-01-03 20:10:00
반면
echo date('Y-m-d H:i:s', strtotime('3rd January, 2010'));
반환 보인다
W 2010 년은 군대 시간이 아니라 1 년 후임을 가정합니다. 2010 년을 연도로 해석하려면 쉼표를 생략하십시오.
strtotime()은 오류가 없습니다. 이 문맥 파서는 날짜에 대한 영어 설명을 타임 스탬프로 변환하려고 시도합니다. 사용중인 형식이 적절한 구문 분석에 적합하지 않은 것으로 보입니다.
다음 예제에서 차이를 볼 수 있습니다
echo strtotime('3rd January,2010')."<BR>";
echo strtotime('3 January, 2010')."<BR>";
echo strtotime('January 3rd, 2010')."<BR>";
echo strtotime('January 3, 2010')."<BR>";
결과 :
1231042200
1231042200
1262505600
1262505600
처음 두 반환 마지막이 아닌 다른 타임 스탬프. 형식 중 마지막 두 단어는 의미 론적으로 (영어로) 정확합니다. 대신이 단어를 사용하려고합니다.
EDIT 다른 포스터가 언급 한 것처럼
, 쉼표 인해 날짜 토큰의 순서로 날짜 부분에 대한 파서 혼란.
echo strtotime('3rd January 2010')."<BR>";
은 올바른 형식의 타임 스탬프를 반환합니다. PHP 5.2.10-2ubuntu6.3에
아주 좋은 답변입니다. 약간의 정보를 추가하기 만하면 : strtotime()이 해를 파싱하지 못하면 지정되지 않은 것처럼 현재 연도 (2009 년)를 사용합니다. – Savageman
하지만 2009와 함께 작동하는 이유는 무엇입니까? 게다가, 첫 번째 형식은 완벽하게 유효한 형식입니다. – understack
오케이, Savageman이 대답했습니다. – understack
WFM : '에코 한 strtotime ('2010년 1월 3일');'반환'1231009800' –
사실,이 사이트에 따르면, 유닉스 타임 스탬프 1230993600가 01/3월 9일 @ 8:40:00. –