거의 마법 함수 <code class="language-php">php > print date("m/d/y h:i:s a", $unixTime);
12/20/11 12:54:48 pm
php > print date("m/d/y h:i:s a");
12/20/11 01:12:11 pm
php > print date("jS of F Y", $unixTime);
20th of December 2011</code>
는 날짜/시간 형식으로 문자열을 첫 번째 인수로, 유닉스 타임 스탬프는 변환의 기초로 사용됩니다. 허용 가능한 날짜 형식은 문서를 참조하십시오.
mktime()
PHP의 DateTime 및 DateTimezone 객체
PHP의
객체는 날짜와 시간대를 처리하는 객체 지향 메소드입니다. 생성자는 위의 mktime(hour, minute, second, month, day, year, isDST)
와 매우 유사한 현악기 표현을 수용하여 일부 사람들은 사용하기가 더 쉽다는 것을 알 수 있습니다. 매개 변수가 제공되지 않으면 기본값은 "지금"입니다.
메소드는 위의 와 동일한 방식으로 작동하며 동일한 형식의 문자를 모두 허용합니다. strtotime()
객체에는 또한 방법에 공급 될 수있는 유용한 상수가 제공됩니다. <code class="language-php">php > print date("r", mktime(12, 0, 0, 1, 20, 1987));
Tue, 20 Jan 1987 12:00:00 -0500
php > print date("r", mktime(0, 0, 0, date("n"), date("j"), date("Y")));
Tue, 20 Dec 2011 00:00:00 -0500
php > print date("r", mktime(23, 59, 59, date("n"), date("j"), date("Y")));
Tue, 20 Dec 2011 23:59:59 -0500</code>
상수의 전체 목록은 문서 페이지에서 찾을 수 있습니다. 곧 시간대를 다룰 것이므로 PHP에 대한 기본 시간대를 제공합시다. php.ini configuration 파일 (CLI와 Apache 용 하나가 있습니다)에서 아래와 같이 섹션을 찾으십시오.
값이 에 할당되지 않으면 PHP는 서버의 시스템 시간대를 결정하기 위해 최선을 다합니다.
를 사용하여 어떤 PHP가 사용하고 있는지 확인할 수 있습니다.
<code class="language-bash">sean@beerhaus:~$ php -a
php > print time();
1324402770</code>
서버의 시간대를 UTC 시간으로 설정하고 구성 파일을 저장하겠습니다. 변경 사항을 보려면 Apache 또는 CLI Shell을 다시 시작해야합니다. php 객체에는 시간대를 추적하기위한 내부 클래스 인스턴스가 포함되어 있습니다. 새 인스턴스의 date.timezone = UTC를 만들 때 내부 DateTime
는 php.ini에 제공된 기본값으로 설정해야합니다. DateTimeZone
DateTime
허용 가능한 시간대 이름의 전체 목록은 시간대 문서 페이지에서 찾을 수 있습니다. 이제 두 개의 DateTimeZone
12 월에 -0500 오프셋에 주목하십시오. 시간 값을 7 월 1 일과 같은 여름 날짜로 변경하면 일광 절약 시간 (EDT)을 알고 있음을 알게 될 것입니다. <code class="language-php">php > $unixTime = time();
php > print_r(getdate($unixTime));
Array
(
[seconds] => 48
[minutes] => 54
[hours] => 12
[mday] => 20
[wday] => 2
[mon] => 12
[year] => 2011
[yday] => 353
[weekday] => Tuesday
[month] => December
[0] => 1324403688
)</code>
DateTime
MySQL 및 php 와 함께 날짜를 사용하십시오
어떤 레벨에서나 MySQL을 사용한 경우 상자에서 작동하는 DateTime 유형을 발견했을 수 있습니다. 그것은 날짜처럼 보이고 냄새가 나고, 그것이 데이트라고 말하면, 당신은 옳습니다. 그러나 MySQL에서 PHP로 선택하면 실제로 가지고있는 것은 날짜처럼 보이는 문자열입니다. 그것은 시간대 인식이 없으며 인간이 그것을보아야하기 전에 인간의 사용을 위해 형식화됩니다. 예, MySQL에는 많은 날짜 형식 형식 기능이 있지만 이미 PHP를 사용하고 있으며, 보시다시피 PHP는 날짜 형식을 처리하는 데 탁월합니다. 데이터베이스에서 직접 포맷 해야하는 이유는 무엇입니까? 다른 변환과 형식을 적용해야 할 수도 있습니다. 인간이 그것을 보려고 할 때만 날짜를 포맷하는 것이 가장 좋습니다. <code class="language-php">php > print date("r", $unixTime);
Tue, 20 Dec 2011 12:54:48 -0500</code>
이 간단한 스크립트를 실행하면 DateTime 필드에서 얻은 모든 것이 시간대 정보가없는 형식의 문자열임을 알 수 있습니다.
<code class="language-php">php > print date("m/d/y h:i:s a", $unixTime);
12/20/11 12:54:48 pm
php > print date("m/d/y h:i:s a");
12/20/11 01:12:11 pm
php > print date("jS of F Y", $unixTime);
20th of December 2011</code>
dateTime 값은 해당 서버의 시간대에 관계없이 MySQL을 실행하는 서버의 현지 시간입니다. 당신이하는 모든 일이 한 시간대에 하나의 서버 만 포함한다면, DateTime은 대부분의 요구에 적합 할 수 있으며, 나는 당신을 매우 부러워합니다. 그렇다면 PHP와 MySQL을 사용하여 날짜와 시간대를 처리하려면 어떻게해야합니까? 저장 날짜는 Unix 타임 스탬프로 저장됩니다. UNIX 시간은 1970 년 1 월 1 일 UTC 이후 몇 초만 있다는 것을 이미 알고 있으므로, 이는 일정한 시간대를 제공하며 PHP의 많은 날짜/시간 기능이 UNIX 타임 스탬프를 기반으로한다는 것을 알 수 있습니다. MySQL을 사용할 때는 일반적으로 날짜를 정수 부호로 저장하는 테이블 열을 만듭니다. 날짜를 삽입 할 때는 PHP의 또는 MySQL의 를 사용할 수 있습니다.
MySQL이 날짜를 형식화하려면이 작업을 수행 할 수 있습니다. 그러나 시간은 MySQL을 실행하는 서버의 시간대에있을 것이며 웹 애플리케이션의 템플릿/보기 수준에 도달하고 볼 준비가 될 때까지 어떤 유형의 형식도 수행하지 않는 것이 좋습니다.
<code class="language-bash">sean@beerhaus:~$ php -a
php > print time();
1324402770</code>
시간 영역에 걸쳐있는 모든 응용 프로그램에는 일반적으로 사용자의 사용자 정의 시간대 설정을 추적 한 다음 값으로 읽는 테이블이 있습니다. 아래와 같이 세션 항목이 있다고 가정합니다.
$_SESSION
저장된 유닉스 타임 (UTC)을 특정 사용자의 시간대의 날짜로 쉽게 변환 할 수 있습니다.
<code class="language-php">php > $unixTime = time();
php > print_r(getdate($unixTime));
Array
(
[seconds] => 48
[minutes] => 54
[hours] => 12
[mday] => 20
[wday] => 2
[mon] => 12
[year] => 2011
[yday] => 353
[weekday] => Tuesday
[month] => December
[0] => 1324403688
)</code>
"2012 년 1 월 16 일 월요일 12:03:49 -0600"날짜가 발생합니다. -0600은 UTC보다 6 시간이 지났으며 UTC의 오프셋은 0이라고 알려줍니다. 시간대를 미국/los_angeles로 설정하면 생성 된 날짜는 다음과 같습니다.
및 America/New_York은 다음을 생성합니다
요약 <code class="language-php">php > print date("r", $unixTime);
Tue, 20 Dec 2011 12:54:48 -0500</code>
처리 날짜와 시간대는 많은 프로그래머의 일상 생활의 일부이지만 PHP의 강력하고 사용하기 쉬운 날짜 라이브러리를 사용할 수있을 때 걱정할 필요가 없습니다. Unix 타임 스탬프를 얻는 방법, 상상할 수있는 형식으로 날짜를 형식화하는 방법, 타임 스탬프로 날짜를 영어 표현하는 방법, 타임 스탬프에 시간을 추가하는 방법 및 시간 영역을 변환하는 방법을 배웠습니다. 이 기사에 두 가지 주요 요점이있는 경우 1) UNIX 시간을 고수하고 2) PHP 및 MySQL을 사용할 때 모든 날짜의 기본 시간대로 UTC를 고수하는 것입니다. UTC를 기반으로 한 모든 시간에 대한 아이디어는 PHP 및 MySQL에만 적용 할 수 없습니다. 자신이 다른 언어로 일하는 것을 발견한다면,“젠장, 왜 PHP와 똑같이 할 수 없습니까?”.
Yakobchuk Vasyl / Shutterstock의 사진
<code class="language-php">php > print date("m/d/y h:i:s a", $unixTime);
12/20/11 12:54:48 pm
php > print date("m/d/y h:i:s a");
12/20/11 01:12:11 pm
php > print date("jS of F Y", $unixTime);
20th of December 2011</code>
(FAQ 섹션은 입력 텍스트의 FAQ 섹션과 비슷한 PHP의 날짜 및 시간을 처리하기위한 FAQ 섹션에 대해 여기에 추가해야합니다.