2011-03-11 4 views
1

PHP에서 기본 날짜 및 타임 스탬프 연산을 수행하려고하는데 예기치 않은 결과가 발생했습니다. 기존의 타임 스탬프 $startDate의 연초, 월, 일 (즉, 오전 12:00시의 타임 스탬프)으로 타임 스탬프를 얻으려고합니다. 그래도 다음 코드에서 볼 수 있듯이 날짜가 변경되었습니다. PHP date() 함수가 예기치 않은 결과를 출력 함

$startDateString = date("Y-M-j", $startDate); 
$startDateTimestamp = strtotime($startDateString); 
echo "$startDate == $startDateTimestamp ?<br>"; 
echo date("Y-M-j", $startDate)." == ".date("Y-M-j", $startDateTimestamp)." ?<br>"; 

나에게 다음과 같은 출력을 제공합니다

1299299589 == 1298952000 ? 
2011-Mar-4 == 2011-Feb-28 ? 

내가 ($startDate은 오전 12시 반드시 아니므로) 타임 스탬프가 동일하게 기대하지 않을 것이다 동안을, 그럴 수 없어 달력 날짜가 어떻게 다른지보십시오. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

$date = new DateTime($startDate); $date->modify('midnight'); echo $date->format('Y-m-d H:i:s'); 
은 (http://us3.php.net/manual/en/datetime.formats.date.php), 그 중 당신은 YMj을 찾을 수 없게됩니다 . – Charles

답변

1

나는 일반적으로 비슷한 작업을 위해 "Y-m-D"형식을 사용하고 작동 :

$startDateString = date("Y-m-d", $startDate); 
$startDateTimestamp = strtotime($startDateString); 
echo "$startDate == $startDateTimestamp ?<br>"; 
echo date("Y-m-d", $startDate)." == ".date("Y-m-d", $startDateTimestamp)." ?<br>"; 
2

:

날짜/시간 문자열. 유효한 형식은 Date and Time Formats에 설명되어 있습니다.

해결하려는 문제는 relative formats과 같이 다른 것들을 strtotime에 전달할 수 있습니다. 예를 들어

strtotime('midnight', $startDate); 

, 현재 시간 (자정이 혼란 경우도 오늘을 사용할 수 있습니다) 자정 반향 :

echo date('Y-m-d H:i:s', strtotime('midnight')); 

'오늘'과 '자정'

모두

시간은 00:00:00으로 설정됩니다.

물론 저는의 큰 팬입니다.개체.

당신은 [strtotime으로 지원하는 형식]을 참조 할 수 있습니다
+0

이것은 정말 도움이되었습니다. 두 가지 정답을 선택할 수 있다면! – jonmorgan

관련 문제