2011-09-27 4 views
0

이것은 올바르게 작동하지 않는 것 같습니다 현재 코드입니다.이 코드의 작동 방식 ?? 그리고 올바른 코드는 무엇입니까

echo date("h:i", 1*60*60) ; /* 1*60*60 mean 1 hours right */

가 1시이어야 때 결과 3시이다.

어디가 잘못 되었습니까?

내가 그것을

2 직원이 와서 선택의 시간 관리에 와서이

1 직원을하고 싶지 - 타임 스탬프로 MySQL에 저장 남겨

지금 만들려고 해요 관리자는 늦게

사용자 날짜 시간 기본을 의미 몇 시간 늦게 사용자 참조

,536,913 63,210

USER1 2011년 11월 9일 9시 10분 9시 10 분

는 USER1 2011년 12월 9일 8시 9시 -60 분

+1

원하는 작업이 무엇이며 무엇을 원하는지를 생각 SamarLover 나에게 발생 보여줍니다? 데이터/시간을 깨끗하게 얻으려면'date()'에 매개 변수를 전달할 수 있습니다. – Mob

+0

시간대가 사용되지 않고,이 코드처럼 사용하는 방법 – SamarLover

+2

['echo date_default_timezone_get();'] (http : // php. net/manual/en/function.date-default-timezone-get.php)? – Gordon

답변

5

date("Y-m-d H:i:s",0) 만 출력하면 1970-01-01 00:00:00이되어야 함을 알 수 있습니다. date이 (가) 현지 시간대의 영향을 받기 때문입니다. 예를 들어 GMT +3이고 date("Y-m-d H:i:s")은 나를 1970-01-01 03:00:00이라고합니다.

GMT 표준 시간대 (아마도 GMT + 2)에 있지 않으므로 date에 영향을받습니다.

UPDATE가 확실히 시간대 그래서

다음 코드 출력 1970-01-01 00:00:00.

date_default_timezone_set('UTC'); 
echo date("Y-m-d H:i:s", 0); 

Hovewer, 나는 PHP의 date 설명서 그것에 대해 어떤 언급을 볼 수 없습니다.

+0

'date()'가 기본적으로 현재 타임 스탬프를 사용하지 않습니까? – Phil

+2

실제로'date ("Y-m-d H : i : s")'(두번째 매개 변수없이)는 유닉스시기가 아니라 현재 시간 ('time()'의 값을 기본값으로한다. – bfavaretto

+0

@Phil, 그렇습니다. :)'... 주어진 타임 스탬프 나 타임 스탬프가 없다면 현재 시간을 사용합니다. ' – J0HN

0

date() 함수의 두 번째 인수는 UNIX timestamp 초이어야 1970 년 1 월 1 일부터 통과되었습니다. 그 가치에 따라 시간을 벌어야합니다.

+0

네, 맞습니다. 타임 스탬프가 0에서 시작한다고 생각합니다. – SamarLover

+0

예, 1970 년 1 월 1 일부터 :) – antyrat

+1

@Gordon 맞아요, 제 대답을 편집했습니다. – antyrat

0

오류가 있습니다. date()의 두 번째 매개 변수는 유닉스 타임 스탬프이므로 1970 년이 후의 초입니다. 시간()을 가져오고 60 * 60을 추가해야합니다.

echo date("h:i", time()+60*60); // get current timestamp, add one hour 
0

당신은 생략 경우 PHP 경고 통지를 생산한다 아마 설정 time zones을 보유하고 있습니다.

+2

나는 반대로 논쟁하겠습니다. OP 서버가 GMT + 2로 설정되어있는 것 같습니다. – Phil

1

문제는 사용자의 시간대 (GMT + 2와 유사 함) 때문입니다.

PHP의 날짜 계산은 구성된 서버 시간대를 기반으로합니다.예를 들어 광산은

$ php -r 'echo date("h:i", 3600), PHP_EOL;' 

11:00 
+0

네, 그게 바로 지금, 내 스크립트가 이집트에서 일하는 시간에 +2 스크립트가 usa로 옮긴다면 (예제 +6) 내 코드 작업을 어떤 장소에서나 동일하게 만드는 방법 – SamarLover

0

그가

gmdate("h:i", 1 * 60 * 60); 
+0

@ 캐머런 레이어드, 고맙습니다. 그리고 나는 그것을 역시 사용할 것이다 :) – SamarLover

+0

당신은 환영합니다, SamarLover; 나는 그것이 당신을 돕는다는 것을 분명히 알게되어 기쁩니다. –