문제

MKTime 기능에 약간의 문제가 있습니다. 내 제작 서버에서 다음을 실행하면 다음을 수행합니다.

echo '<p>' . mktime(24, 0,0, 8,29,2009) . ' - 12pm</p>';
echo '<p>' . mktime(23, 0,0, 8,29,2009) . ' - 11pm</p>';
echo '<p>' . mktime(22, 0,0, 8,29,2009) . ' - 10pm</p>';

그런 다음 해당 타임 스탬프를 다시 읽을 수있는 형식으로 변환합니다 (사용 www.unixtimestamp.com 빠른 변환을 위해), 시간은 모두 1 시간 씩 떨어져 있습니다. 나는 원래 이것이 2400 대 0000의 문제라고 생각했지만 다른 날짜가 꺼진 것을 설명하지는 않을 것입니다.

어떤 아이디어?

도움이 되었습니까?

해결책

서버마다 기대하는 것과는 시간대가 다릅니다. UNIX 타임 스탬프는 1.1.1970 00:00:00 이후 몇 초 안에 측정됩니다 GMT, 따라서 코드에 숨겨진 시간대 변환이 있습니다. 당신도 할 수 있습니다

다른 팁

방금 명령 줄에서 다음을 실행했고 다음 (예상) 출력을 얻었습니다. 당신이 그들을 실행하면 어떻게됩니까?

$ php -r "echo date('H:i:s Y-m-d', mktime(24, 0, 0, 8, 29, 2009));"
00:00:00 2009-08-30

$ php -r "echo date('H:i:s Y-m-d', mktime(23, 0, 0, 8, 29, 2009));"
23:00:00 2009-08-29

$ php -r "echo date('H:i:s Y-m-d', mktime(22, 0, 0, 8, 29, 2009));"
22:00:00 2009-08-29

내 문제는 mktime 나는 요일과 월을 입력합니다 주요 0. 함수가 나에게 잘못된 결과를 반환 한 것보다. 한 가지 옵션은 다음과 같은 기능으로 선행 0을 제거하는 것입니다.

$str = ltrim($str, '0');

원천: 끈으로 모든 선행 제로를 제거하는 방법

또는

$var = (int)$var;

원천: PHP 첫 번째 0을 제거하십시오

나는 Soulmerge의 한 가지 가능성을 사용했습니다.

$date = new DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $seconds);
$match_time = $date->getTimestamp();

그러나 시간대는 항상 설정되어야합니다 ( date_default_timezone_set() 또는 직접 DateTime.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top