> 백엔드 개발 > PHP 튜토리얼 > 감마 함수 php의 날짜 처리 기능과 uchome의 function_coomon의 날짜 처리 기능에 관한 연구

감마 함수 php의 날짜 처리 기능과 uchome의 function_coomon의 날짜 처리 기능에 관한 연구

WBOY
풀어 주다: 2016-07-29 08:44:10
원래의
1059명이 탐색했습니다.

코드 복사 코드는 다음과 같습니다.


echo mktime(11,25) ,0, 9,5,2010);//시간과 동일
echo microtime()
echo mktime(0,0,0,1,1,1970)
?> >

여기의 출력은 1283657290, 1283657100, 0.88533200 1283657290, -25200입니다. 마지막 값으로 판단하면 여기에 반환된 타임스탬프는 제가 중국에 있었을 때인 1970년 1월 1일 0시인 시간대에 따라 조정되었음을 알 수 있습니다. 여기서 시간은 음수이며 전체 값은 -8*3600과 같습니다.
다시 보세요

코드 복사 코드는 다음과 같습니다.

echo date ("H i l d F" ,1283657100);
echo gmdate("H i l d F",1283657100)
echo strftime("%Hh%M %A %d %b"
//strftime()은 특수 형식 문자 앞에 퍼센트 기호 %가 와야 한다는 점을 제외하면 date()와 다르지 않습니다.
echo strtotime("2010-9-5 11:25:00")
var_dump(getdate (time()))
?> 출력은 11 25 9월 5일 일요일 03 25 9월 5일 일요일 11h25 9월 5일 일요일 1283657100, array(11) {
["seconds"]=>
int(9)

["분 "]=>
int(39)
["hours"]=>
int(11)
["mday"]=>
int(5)
["wday"]=>
int(0)
["mon"]=>
int(9)
["연도"]=> 2010)
["yday"]=>
int(247)
["weekday"]=>
string(6) "일요일"
["month"]= >
string(9) "September"
[0]=>
int(1283657949)
}
주로 세 번째 출력을 보면, 여기 출력은 2010년입니다. 그리니치에서의 시간은 2018년 9월 5일 11시 25분이었습니까? 여기서는 시차도 고려해야 합니다. 그리고 또 다른 이상한 점은 gmdate만이 경고를 발행하지 않고 나머지는 시스템의 시간대에 의존할 수 없다는 경고가 있다는 것입니다. 상상해 보세요. gmdate는 그리니치 시간만 계산하기 때문에 시스템 시간대가 틀리더라도 한 번 더하고 한 번 빼면 다시 정상이 됩니다.



코드 복사

코드는 다음과 같습니다.

//시간 형식function sgmdate($dateformat, $timestamp =' ', $format=0) { 전역 $_SCONFIG, $_SGLOBAL;

if(empty($timestamp)) {

$timestamp = $_SGLOBAL['timestamp']
}
$timeoffset = strlen($_SGLOBAL['member']['timeoffset'])>0?intval($_SGLOBAL['member']['timeoffset']):intval($_SCONFIG['timeoffset'] );
$result = '';
if($format) {
$time = $_SGLOBAL['timestamp'] - $timestamp;
if($time > 24*3600) {
$result = gmdate($dateformat, $timestamp $timeoffset * 3600)
} elseif ($time > 3600) {
$result = intval($time/3600).lang(' hour' ).lang('before');
} elseif ($time > 60) {
$result = intval($time/60).lang('분').lang('before' );
} elseif ($time > 0) {
$result = $time.lang('second').lang('before')
} else {
$result = lang( '지금');
}
} else {
$result = gmdate($dateformat, $timestamp $timeoffset * 3600)
}
return $result; }


if($format){}의 내용을 직접 살펴보겠습니다. 먼저 시스템의 현재 시간과 내가 전달한 시간(보통 데이터베이스의 시간, 예를 들어 2010-9-4 21:00:00). 시차가 1일 이내이면 결론이 직접 도출됩니다(예: 2시간 전). 1일보다 크면 gmdate가 호출됩니다. 나는 여기서 그것을 이해하지 못합니다. date($timestamp) 대신 이 이상한 함수를 직접 호출하는 이유는 무엇입니까? 이게 도대체 무슨 뜻이야?
gmdate
핀란드(GMT 0200)에서 실행하면 아래 첫 번째 줄은 "Jan 01 1998 00:00:00"을 인쇄하고 두 번째 줄은 "Dec 31 1997 22:00:00"을 인쇄합니다.

코드 복사

코드는 다음과 같습니다.

echo date("M d Y H:i:s ", mktime(0, 0, 0, 1, 1, 1998)); echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998)); ?>

즉, gmdate는 시차를 고려했습니다. 며칠 전이 아닌 표준 시간 형식이 여기에 출력됩니다.
다음으로 uhome의 function_common에 있는 함수들을 집중적으로 살펴보겠습니다



코드를 복사하세요


코드는 다음과 같습니다

/ /String time function sstrtotime($string) { global $_SGLOBAL, $_SCONFIG; $time = '' if($string) {

$time = strtotime($ 문자열) ;

if(gmdate('H:i', $_SGLOBAL['timestamp'] $_SCONFIG['timeoffset'] * 3600) != date('H:i', $_SGLOBAL['timestamp'] )) {
$time = $time - $_SCONFIG['timeoffset'] * 3600
}
}
$time 반환
}


이 기능에는 기능이 거의 없지만 제가 보기엔 많이 어렵습니다. 이는 시간 문자열을 타임스탬프로 변환하는 것입니다. 예를 들어 여기에 입력한 값은 2010 9 4 21:08이고 $time 값은 이 시간과 1970년 1월 1일 00:00:00 GMT 사이의 시차입니다. $_SGLOBAL[''timestamp] 값은 실제로 $time과 동일한 방식으로 계산되지만, 값이 약간 다를 수 있습니다. $_SCONFIG['timeoffset']은 구성 테이블에 있으며 현재 값은 8입니다. 시스템 타임존이 맞는지, 틀린지 $_SCONFIG['timeoffset']를 통해 확인해야 하는 상황이 있습니다. gmdate는 시스템 시간대를 통해 들어오는 타임스탬프(프로그램이 실행되는 장소의 타임스탬프)를 전달하여 해당 시간의 그리니치 시간을 가져옵니다. 시스템 시간대가 올바르게 설정된 경우 이는 정확히 하나의 플러스와 하나의 마이너스이며 후자와 동일합니다(사실 여기서 $_SGLOBAL[''timestamp] 값은 관련이 없습니다). 정상이면 $time을 변경할 필요가 없습니다. 비정상이면 줄여야 합니다. 그런데 또 이게 도대체 무슨 뜻일까요?

위 내용은 감마 함수를 포함한 PHP 날짜 처리 함수와 uchome의 function_coomon에 있는 날짜 처리 함수에 대한 연구를 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿