> 백엔드 개발 > PHP 튜토리얼 > PHP_php 팁의 UNIX 타임스탬프 및 날짜 변환 및 계산 예

PHP_php 팁의 UNIX 타임스탬프 및 날짜 변환 및 계산 예

WBOY
풀어 주다: 2016-05-16 20:31:01
원래의
1534명이 탐색했습니다.

UNIX 타임스탬프는 날짜와 시간을 저장하는 간결하고 간결한 방법으로, 대부분의 UNIX 시스템에서 현재 날짜와 시간을 저장하는 방법이자 대부분의 컴퓨터 언어 형식으로 날짜와 시간을 표현하는 표준입니다. 그리니치 표준시를 32비트 정수로 나타냅니다. 예를 들어 인증서 11230499325를 사용하여 현재 시간의 타임스탬프를 나타냅니다. UNIX 타임스탬프는 1970년 1월 1일 자정(UTC/GMT 자정)부터 현재 시간까지 경과된 초 수입니다. 1970년 1월 1일 0시는 모든 날짜 계산의 기준이 되며, 이 날짜가 일반적으로 UNIX 시대가 됩니다.

UNIX 타임스탬프는 32비트 디지털 형식이므로 두 시점 사이의 일수 계산과 같은 컴퓨터 처리에 특히 적합합니다. 또한, 문화적, 지역적 차이로 인해 서로 다른 시간 형식과 시간대 문제가 있습니다. 따라서 UNIX 타임스탬프 역시 시간대에 따라 표준화되도록 설계된 범용 형식이며, 이 형식은 어떤 형식으로든 쉽게 변환될 수 있습니다. 또한 UNIX 타임스탬프는 32비트 인증서로 표시되므로 1902년 이전이나 2038년 이후의 이벤트를 처리할 때 몇 가지 문제가 발생합니다. 또한 Windows에서는 타임스탬프가 음수가 될 수 없으므로 PHP에서 제공하는 타임스탬프 함수를 사용하여 1970년 이전 날짜를 처리할 경우 오류가 발생합니다. PHP 코드를 이식 가능하게 만들려면 이 점을 명심해야 합니다.

날짜와 시간을 UNIX 타임스탬프로 변환

PHP에서 날짜와 시간을 UNIX 타임스탬프로 변환해야 하는 경우 mktime() 함수를 호출할 수 있습니다. 이 함수의 프로토타입은 다음과 같습니다.

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

int mktime([int 시간 [,int 분[,int 초[,int 월[,int day[int 연도]]]]]])

이 함수의 모든 매개변수는 선택사항입니다. 매개변수가 비어 있으면 기본적으로 현재 시간이 UNIX 타임스탬프로 변환됩니다. 이런 방식으로 현재 UNIX 타임스탬프를 얻기 위해 time() 함수를 직접 호출하는 것과 동일한 기능을 갖습니다. 매개변수는 오른쪽에서 왼쪽으로 생략할 수도 있으며, 생략된 매개변수는 현지 날짜 및 시간의 현재 값으로 설정됩니다. 날짜만 변환하고 특정 시간은 신경 쓰지 않는 경우 처음 세 개의 변환 시간 매개변수를 0으로 설정하면 됩니다. mktime() 함수는 날짜 연산 및 확인에 매우 유용합니다. 범위 입력. 아래와 같이:

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

echo date("Y-m-d",mktime(0,0,0,12,36,2008))."n"; //날짜가 31일 이상이고 2009-01-05를 계산해서 출력합니다
echo date("Y-m-d",mktime(0,0,0,14,1,2010))."n"; //월이 12를 초과하고 계산된 출력은 2011-02-01입니다
echo date("Y-m-d",mktime(0,0,0,1,1,2012))."n"; //변환 문제 없음, 결과 2012-01-01
echo date("Y-m-d",mktime(0,0,0,1,1,99))."n";                    99년을 1999년, 1990-01-01로 변환합니다
?>

영어 텍스트의 날짜 및 시간 설명을 UNIX 타임스탬프로 직접 구문 분석해야 하는 경우 strtotime() 함수를 사용할 수 있습니다.

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

int strtotime(문자열 시간[,int now])

strtotime() 함수는 영어라는 자연어로 Acura Time의 타임스탬프를 생성할 수 있으며, 미국 영어 날짜 형식이 포함된 문자열을 허용하고 이를 UNIX 타임스탬프로 구문 분석하려고 시도합니다(1970년 1월 1일 00:00:00 이후). GMT 설명) 해당 값은 now 매개변수에 지정된 시간을 기준으로 합니다. 보조 매개변수가 제공되지 않으면 현재 시스템 시간이 사용됩니다. 함수가 성공적으로 실행되면 타임스탬프를 반환하고, 그렇지 않으면 FALSE를 반환합니다. mktime()과의 비교는 다음과 같습니다.

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

echo date("Y-m-d", strtotime("now")); //현재 타임스탬프 출력
echo date("Y-m-d", strtotime("2012년 5월 8일")); //2012-05-08 출력
echo date("Y-m-d", strtotime(" 1 day")); //현재 날짜에 1일을 더한 값을 출력
echo date("Y-m-d", strtotime("지난 월요일")) //2012-04-02 출력
?>

다음 예제에서는 strtotime() 함수를 사용하여 프로젝트 개발에서 이 함수의 실제 적용을 소개하는 기념일 카운트다운 프로그램을 작성합니다.

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

$now =strtotime("지금"); //현재 시간
$endtime= strtotime("2014-08-18 08:08:08"); //졸업 시간을 설정하고 타임스탬프로 변환

$second = $endtime-$now; //졸업 시간부터 현재 시간까지의 타임스탬프를 가져옵니다(초)
$year = Floor($second/3600/24/365); //이 타임스탬프의 연수를 변환합니다

$temp =$second-$year*365*24*3600; //이 타임스탬프에서 전체 연도의 초를 제거하고 해당 월의 초만 남깁니다.
$month=floor($temp/3600/24/30); //이 타임스탬프의 개월 수를 변환합니다

$temp=$temp-$month*30*3600*24; //타임스탬프에서 전체 월의 초를 제거하고 날짜에 대한 설명만 남깁니다
$day = Floor($temp/24/3600); //이 타임스탬프에서 남은 날짜를 변환합니다

$temp=$temp-$day*3600*24; //이 타임스탬프에서 하루 전체의 초를 제거하고 시간의 초만 남깁니다.
$hour = Floor($temp/3600); //이 타임스탬프에서 남은 시간을 변환합니다

$temp=$temp- $hour*3600; //타임스탬프에서 시간의 초를 제거하고 분의 초만 남깁니다
$ Minute=floor($temp/60); //이 타임스탬프의 나머지 부분을 변환합니다

$second1=$temp-$ Minute*60; //초만 남았습니다

echo "졸업까지 아직 ($년)년($month)($day)일($hour)시간($분)분($second1)초 남았습니다.";
?>

참고: 해당 연도가 두 자리 형식인 경우 해당 값 0-69는 2000-2069를 나타내고 70-100은 1970-2000을 나타냅니다.

날짜 계산

PHP에서 두 날짜 사이의 길이를 계산하는 가장 간단한 방법은 두 UNIX 타임스탬프 간의 차이를 계산하는 것입니다. 예를 들어, HTML 양식에서 사용자의 생년월일을 수신하고 사용자의 나이를 계산하는 PHP 스크립트가 있습니다. 아래와 같이:

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

//사용자가 제출한 생년월일을 폼에서 받아옵니다
$연도 = 1981;
$월 = 11;
$day = 05;
$birthday = mktime(0,0,0,$month,$day,$year); //생년월일을 UNIX 타임스탬프로 변환
$nowdate = time(); //time() 함수를 호출하여 현재 시간의 UNIX 타임스탬프를 가져옵니다
$ageunix = $nowdate -$birthday; //두 개의 타임스탬프를 빼서 사용자 연령의 UNIX 타임스탬프를 얻습니다
$age = Floor($ageunix/3600/24/365); //UNIX 타임스탬프를 1년의 초 수로 나누어 사용자의 나이를 구합니다
echo "연령: $age";

?>

위 스크립트에서는 mktime() 함수를 호출하여 사용자의 생년월일을 UNIX 타임스탬프로 변환한 후 time() 함수를 호출하여 현재 시간의 UNIX 타임스탬프를 가져옵니다. 날짜 형식은 정수로 표현되므로 뺄셈이 가능합니다. 계산 후 얻은 UNIX 타임스탬프를 1년의 초 수로 나누어 UNIX 타임스탬프를 연간 단위로 변환합니다.

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