> 백엔드 개발 > PHP 튜토리얼 > PHP 및 MySQL의 날짜 및 시간으로 작업

PHP 및 MySQL의 날짜 및 시간으로 작업

Jennifer Aniston
풀어 주다: 2025-02-28 09:22:30
원래의
761명이 탐색했습니다.

Working with Dates and Times in PHP and MySQL 모든 프로그래밍 언어의 날짜와 시간 처리 시간대가 지원 될 때까지 종종 간단하고 사소한 작업입니다. 다행스럽게도 PHP는 다양한 시간 관련 문제를 처리하는 데 도움이되는 강력한 날짜/시간 도구를 가지고 있습니다. UNIX 타임 스탬프, 휴먼 읽기의 형식 날짜, 시간대가있는 디스플레이 날짜, 다음 달과 두 번째 화요일 사이의 시간 차이를 계산합니다. 이 기사는 PHP의 시간 함수 (,

및 )의 기본 사항과 객체 지향적 인 대응 물의 기본 사항을 소개 한 다음 MySQL 날짜에 대해 배우고 PHP와 완벽하게 작동하는 방법을 보여줍니다.

time() 주요 이익 mktime() date()

, 와 같은 PHP의 강력한 날짜 및 시간 함수로 Unix 타임 스탬프 및 형식 날짜를 효율적으로 처리합니다. 다른 시간 영역 처리를 포함하여 객체 지향 날짜 및 시간 조작에 php 's 및
    객체를 사용하십시오.
  • MySQL에 날짜를 UNIX 타임 스탬프로 저장하여 다른 시간 영역 간의 일관성을 유지하고 PHP의 날짜/시간 기능을 사용하여 변환 및 서식을 유지합니다. time() 날짜 및 시간 관리를 단순화하고 응용 프로그램 일관성을 보장하기 위해 PHP 구성에서 서버의 기본 시간대를 UTC로 설정하십시오. mktime() date() PHP 날짜 및 시간 기능
  • DateTime
    이 기사의 대부분은 posix 시간 또는 에포크 시간이라고도하는 Unix 시간을 사용합니다. 시간은 1970 년 1 월 1 일 자정 UTC 이후 초가 경과 한 것으로 표현됩니다. UNIX 시간의 전체 역사에 관심이 있으시면 Wikipedia의 Unix Time 기사를 확인하십시오. GMT라고도 알려진 UTC (Coordinated Universal Time)는 0도 경도선의 시간입니다. 세계의 다른 모든 시간대는이 시간에 비해 양수 또는 부정적인 오프셋으로 표시됩니다. UTC 및 UNIX 시간을 사용하여 시간을 처리하면 시간대를 처리해야 할 때 인생이 더 쉬워집니다. 나중에 이것에 대해 자세히 살펴 보지만 지금은 시간대 문제를 무시하고 시간 기능을 살펴 보겠습니다. DateTimeZone 현재 유닉스 시간을 얻습니다
  • 는 매개 변수를 허용하지 않으며 UNIX 에포크 이후 몇 초를 반환합니다. 이를 설명하기 위해 PHP 대화식 CLI 쉘을 사용하겠습니다.
  • Unix 시간의 배열 표현이 필요한 경우 함수를 사용하십시오. 선택적 UNIX 타임 스탬프 매개 변수를 수용하지만 기본값은 제공되지 않은 경우
  • 의 값으로 기본값을받습니다.

형식 유닉스 시간 unix 시간은 인간이 읽고 자하는 모든 문자열로 쉽게 포맷 될 수 있습니다.

는 유닉스 타임 스탬프를 사람이 읽을 수있는 문자열로 포맷하고 형식 매개 변수와 선택적 시간 매개 변수를 수락하는 데 사용됩니다. 선택적 타임 스탬프가 제공되지 않으면
의 값이 사용됩니다.

sean@beerhaus:~$ php -a
php > print time();
1324402770
로그인 후 복사
로그인 후 복사
로그인 후 복사
"r"형식 문자열 RFC 2822에 의해 지정된 서식 시간을 반환합니다. 물론 다른 지정자를 사용하여 자신의 사용자 정의 형식을 정의 할 수 있습니다.

허용 가능한 형식의 문자의 전체 목록은 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
)
로그인 후 복사
로그인 후 복사
로그인 후 복사
페이지를 참조하십시오. 그러나 다음 예제에서 볼 수 있듯이

date() 함수와 함께 사용하면 기능이 더 유용 해집니다. mktime() strtotime() <<> 주어진 시간을 기준으로 유닉스 시간을 만듭니다

<<>는 날짜의 각 부분에 해당하는 값 (초, 분, 시간, 연도 등)을 기반으로 Unix 타임 스탬프를 만드는 데 사용됩니다. 날짜의 각 부분을 다음 순서로 설정하는 많은 정수 매개 변수를 수용합니다.

1 ~ 1 일광 절약 시간이 활성화되지 않은 경우 -1로 설정합니다 (기본값).

mktime() 사용자 정의 날짜 범위를 사용하여 데이터베이스 쿼리를 처리 할 때

가 매우 유용하다는 것을 알 수 있습니다. 예를 들어, 타임 스탬프를 MySQL (누구나 Foreshadows 누구입니까?)에서 정수 (Unix Time)로 저장하면 일반적인 연간 쿼리 범위를 쉽게 설정할 수 있습니다.
php > print date("r", $unixTime);
Tue, 20 Dec 2011 12:54:48 -0500
로그인 후 복사
로그인 후 복사
로그인 후 복사

isDST <<> 영어 날짜를 Unix Time으로 해결하십시오 <🎜 🎜>

거의 마법 함수
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
로그인 후 복사
로그인 후 복사
로그인 후 복사
는 날짜/시간 형식으로 문자열을 첫 번째 인수로, 유닉스 타임 스탬프는 변환의 기초로 사용됩니다. 허용 가능한 날짜 형식은 문서를 참조하십시오.

mktime() <🎜 🎜> <<> PHP의 DateTime 및 DateTimezone 객체 <🎜 🎜> <🎜 🎜> <<<> PHP의

객체는 날짜와 시간대를 처리하는 객체 지향 메소드입니다. 생성자는 위의 <🎜
<code>mktime(hour, minute, second, month, day, year, isDST)</code>
로그인 후 복사
와 매우 유사한 현악기 표현을 수용하여 일부 사람들은 사용하기가 더 쉽다는 것을 알 수 있습니다. 매개 변수가 제공되지 않으면 기본값은 "지금"입니다.

<🎜

메소드는 위의 <🎜 🎜>와 동일한 방식으로 작동하며 동일한 형식의 문자를 모두 허용합니다. strtotime() 객체에는 또한

방법에 공급 될 수있는 유용한 상수가 제공됩니다.
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
로그인 후 복사

상수의 전체 목록은 문서 페이지에서 찾을 수 있습니다. 곧 시간대를 다룰 것이므로 PHP에 대한 기본 시간대를 제공합시다. php.ini configuration 파일 (CLI와 Apache 용 하나가 있습니다)에서 아래와 같이 섹션을 찾으십시오. 값이 <🎜 🎜>에 할당되지 않으면 PHP는 서버의 시스템 시간대를 결정하기 위해 최선을 다합니다.

를 사용하여 어떤 PHP가 사용하고 있는지 확인할 수 있습니다.

sean@beerhaus:~$ php -a
php > print time();
1324402770
로그인 후 복사
로그인 후 복사
로그인 후 복사
서버의 시간대를 UTC 시간으로 설정하고 구성 파일을 저장하겠습니다. 변경 사항을 보려면 Apache 또는 CLI Shell을 다시 시작해야합니다. php

객체에는 시간대를 추적하기위한 내부 <🎜 🎜> 클래스 인스턴스가 포함되어 있습니다. 새 인스턴스의 <🎜 date.timezone = UTC를 만들 때 내부 DateTime는 php.ini에 제공된 기본값으로 설정해야합니다. DateTimeZone DateTime 허용 가능한 시간대 이름의 전체 목록은 시간대 문서 페이지에서 찾을 수 있습니다. 이제 두 개의 <🎜 객체에 다른 시간대가 주어지면 시차를 볼 수 있습니다. 예를 들어, UTC를 America/New_York (EST) 시간으로 변환하는 예는 다음과 같습니다. DateTimeZone

< -> 12 월에 -0500 오프셋에 주목하십시오. 시간 값을 7 월 1 일과 같은 여름 날짜로 변경하면 일광 절약 시간 (EDT)을 알고 있음을 알게 될 것입니다.
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
)
로그인 후 복사
로그인 후 복사
로그인 후 복사

DateTime <<> MySQL 및 php <🎜

<🎜 🎜>와 함께 날짜를 사용하십시오 어떤 레벨에서나 MySQL을 사용한 경우 상자에서 작동하는 DateTime 유형을 발견했을 수 있습니다. 그것은 날짜처럼 보이고 냄새가 나고, 그것이 데이트라고 말하면, 당신은 옳습니다. 그러나 MySQL에서 PHP로 선택하면 실제로 가지고있는 것은 날짜처럼 보이는 문자열입니다. 그것은 시간대 인식이 없으며 인간이 그것을보아야하기 전에 인간의 사용을 위해 형식화됩니다. 예, MySQL에는 많은 날짜 형식 형식 기능이 있지만 이미 PHP를 사용하고 있으며, 보시다시피 PHP는 날짜 형식을 처리하는 데 탁월합니다. 데이터베이스에서 직접 포맷 해야하는 이유는 무엇입니까? 다른 변환과 형식을 적용해야 할 수도 있습니다. 인간이 그것을 보려고 할 때만 날짜를 포맷하는 것이 가장 좋습니다.
php > print date("r", $unixTime);
Tue, 20 Dec 2011 12:54:48 -0500
로그인 후 복사
로그인 후 복사
로그인 후 복사
<<>

이 간단한 스크립트를 실행하면 DateTime 필드에서 얻은 모든 것이 시간대 정보가없는 형식의 문자열임을 알 수 있습니다.

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
로그인 후 복사
로그인 후 복사
로그인 후 복사
dateTime 값은 해당 서버의 시간대에 관계없이 MySQL을 실행하는 서버의 현지 시간입니다. 당신이하는 모든 일이 한 시간대에 하나의 서버 만 포함한다면, DateTime은 대부분의 요구에 적합 할 수 있으며, 나는 당신을 매우 부러워합니다. 그렇다면 PHP와 MySQL을 사용하여 날짜와 시간대를 처리하려면 어떻게해야합니까? 저장 날짜는 Unix 타임 스탬프로 저장됩니다. UNIX 시간은 1970 년 1 월 1 일 UTC 이후 몇 초만 있다는 것을 이미 알고 있으므로, 이는 일정한 시간대를 제공하며 PHP의 많은 날짜/시간 기능이 UNIX 타임 스탬프를 기반으로한다는 것을 알 수 있습니다. MySQL을 사용할 때는 일반적으로 날짜를 정수 부호로 저장하는 테이블 열을 만듭니다. 날짜를 삽입 할 때는 PHP의 <🎜

또는 MySQL의 <🎜 를 사용할 수 있습니다.

MySQL이 날짜를 형식화하려면이 작업을 수행 할 수 있습니다. 그러나 시간은 MySQL을 실행하는 서버의 시간대에있을 것이며 웹 애플리케이션의 템플릿/보기 수준에 도달하고 볼 준비가 될 때까지 어떤 유형의 형식도 수행하지 않는 것이 좋습니다.

sean@beerhaus:~$ php -a
php > print time();
1324402770
로그인 후 복사
로그인 후 복사
로그인 후 복사
시간 영역에 걸쳐있는 모든 응용 프로그램에는 일반적으로 사용자의 사용자 정의 시간대 설정을 추적 한 다음

값으로 읽는 테이블이 있습니다. 아래와 같이 세션 항목이 있다고 가정합니다. $_SESSION 저장된 유닉스 타임 (UTC)을 특정 사용자의 시간대의 날짜로 쉽게 변환 할 수 있습니다.

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
)
로그인 후 복사
로그인 후 복사
로그인 후 복사
"2012 년 1 월 16 일 월요일 12:03:49 -0600"날짜가 발생합니다. -0600은 UTC보다 6 시간이 지났으며 UTC의 오프셋은 0이라고 알려줍니다. 시간대를 미국/los_angeles로 설정하면 생성 된 날짜는 다음과 같습니다.

및 America/New_York은 다음을 생성합니다

<🎜 🎜> <<> 요약
php > print date("r", $unixTime);
Tue, 20 Dec 2011 12:54:48 -0500
로그인 후 복사
로그인 후 복사
로그인 후 복사

처리 날짜와 시간대는 많은 프로그래머의 일상 생활의 일부이지만 PHP의 강력하고 사용하기 쉬운 날짜 라이브러리를 사용할 수있을 때 걱정할 필요가 없습니다. Unix 타임 스탬프를 얻는 방법, 상상할 수있는 형식으로 날짜를 형식화하는 방법, 타임 스탬프로 날짜를 영어 표현하는 방법, 타임 스탬프에 시간을 추가하는 방법 및 시간 영역을 변환하는 방법을 배웠습니다. 이 기사에 두 가지 주요 요점이있는 경우 1) UNIX 시간을 고수하고 2) PHP 및 MySQL을 사용할 때 모든 날짜의 기본 시간대로 UTC를 고수하는 것입니다. UTC를 기반으로 한 모든 시간에 대한 아이디어는 PHP 및 MySQL에만 적용 할 수 없습니다. 자신이 다른 언어로 일하는 것을 발견한다면,“젠장, 왜 PHP와 똑같이 할 수 없습니까?”<🎜 🎜>. Yakobchuk Vasyl / Shutterstock의 사진

<<>
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
로그인 후 복사
로그인 후 복사
로그인 후 복사

(FAQ 섹션은 입력 텍스트의 FAQ 섹션과 비슷한 PHP의 날짜 및 시간을 처리하기위한 FAQ 섹션에 대해 여기에 추가해야합니다.

위 내용은 PHP 및 MySQL의 날짜 및 시간으로 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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