간단한 시간함수 들입니다.
먼저 현재시간을 나타 낼 때에는
string date ( string $format [, int $timestamp ] )
를 사용합니다.
date(시간포맷)만 사용하면 간단하게 String으로 나타내줍니다.
포맷은 아래표를 참고하세요.
format문자 | 설명 | 반환값 예시 |
|---|---|---|
| 일 | --- | --- |
| d | 일, 앞에 0이 붙는 2 숫자 | 01에서 31 |
| D | 요일 글자 표현, 3 문자 | Mon에서 Sun |
| j | 앞에 0이 붙지 않는 일 | 1에서 31 |
| l (소문자 'L') | 요일의 완전한 글자 표현 | Sunday에서Saturday |
| N | 요일의 ISO-8601 숫자 표현 (PHP 5.1.0에서 추가) | 1(월요일)에서 7(일요일) |
| S | 일 영어 접미사, 2 문자 | st, nd, rd, th. j와 잘 맞습니다. |
| w | 요일 숫자 표현 | 0(일요일)에서 6(토요일) |
| z | 해당 연도 일차 (0에서 시작) | 0에서 365 |
| 주 | --- | --- |
| W | ISO-8601 주차, 주는 월요일에 시작 (PHP 4.1.0에서 추가) | 예시: 42 (그 해의 42번째 주) |
| 월 | --- | --- |
| F | January나 March 같은 월의 완전한 글자 표현 | January에서December |
| m | 0이 붙는 월 숫자 표현 | 01에서 12 |
| M | 월의 축약 글자 표현, 3 문자 | Jan에서 Dec |
| n | 0이 붙지 않는 월 숫자 표현 | 1에서 12 |
| t | 주어진 월의 일 수 | 28에서 31 |
| 연 | --- | --- |
| L | 윤년 여부 | 윤년엔 1, 그 외엔 0 |
| o | ISO-8601 연도. Y와 같지만, ISO 주차(W)가 전해나 다음해에 해당하면, 그 연도를 사용합니다. (PHP 5.1.0에서 추가) | 예시: 1999나 2003 |
| Y | 연도의 완전한 숫자 표현, 4 숫자 | 예시: 1999나 2003 |
| y | 연도의 두 숫자 표현 | 예시: 99나 03 |
| 시간 | --- | --- |
| a | 오전과 오후의 소문자 | am 또는 pm |
| A | 오전과 오후의 대문자 | AM 또는 PM |
| B | 스와치 인터넷 시간 | 000에서 999 |
| g | 0이 붙지 않는 12시간 형식 시 | 1에서 12 |
| G | 0이 붙지 않는 24시간 형식 시 | 0에서 23 |
| h | 0이 붙는 12시간 형식 시 | 01에서 12 |
| H | 0이 붙는 24시간 형식 시 | 00에서 23 |
| i | 0이 붙는 분 | 00에서 59 |
| s | 초, 0이 붙음 | 00에서 59 |
| u | 마이크로초 (PHP 5.2.2에서 추가) | 예시: 54321 |
| 시간대 | --- | --- |
| e | 시간대 식별자 (PHP 5.1.0에서 추가) | 예시: UTC, GMT,Atlantic/Azores |
| I (대문자 i) | 일광 절약 시간 여부 | 일광 절약 시간이면1, 아니면 0 |
| O | 그리니치 시간(GMT)과 시차 | 예시: +0200 |
| P | 시와 분 사이에 콜론이 들어가는 그리니치 시간(GMT)과 차이 | 예시: +02:00 |
| T | 시간대 축약어 | 예시: EST, MDT ... |
| Z | 시간대 오프셋 초. UTC 서쪽은 항상 음수, UTC 동쪽은 항상 양수 | -43200에서 50400 |
| 날짜/시간 표현 | --- | --- |
| c | ISO 8601 날짜 (PHP 5에서 추가) | 2004-02-12T15:19:21+00:00 |
| r | » RFC 2822 형식 날짜 | 예시: Thu, 21 Dec 2000 16:01:07 +0200 |
| U | 유닉스 에포치(January 1 1970 00:00:00 GMT)부터 초수 | time() 참조 |
간단한 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 | <?php echo 'TODAY<br><br>'; echo 'DATE <br>'; echo date('Y-m-d(z) l').'<br>'; echo 'TIME <br>'; echo date('A h:i:s(P)').'<br>'; echo 'TIMESTAMP <br>'; echo date('U').'<br>'; echo '<br><br>'; ?> | cs |
첫번째는 오늘 날짜와 몇번째 일 수와 요일
두번째는 현재 시간과 표준시와의 시차
마지막은 타임스탬프입니다.
위 표를 보고 하나씩 해보시면 쉽게 이해되실 겁니다.
다음은 시간 계산하는 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo 'DATE CALCULATE <br><br>'; $today=date_create(); echo 'DATE->TIMESTAMP <br>'; $timestamp=date_timestamp_get($today); echo $timestamp.'<br>'; echo 'TIMESTAMP->DATE <br>'; date_timestamp_set($today,$timestamp); echo date_format($today, 'Y-m-d(z) l A h:i:s(P)').'<br>'; echo 'YESTERDAY is<br>'; $yesterday=date_create(); date_sub($yesterday,date_interval_create_from_date_string('1 days')); echo date_format($yesterday,'Y-m-d(z) l').'<br>'; echo 'TOMORROW is<br>'; $tomorrow=date_create(); date_add($tomorrow,date_interval_create_from_date_string('1 days')); echo date_format($tomorrow,'Y-m-d(z) l').'<br>'; ?> | cs |
Line 4의 date_create()는 datetime형식으로 시간정보를 생성하는 메소드입니다.
인자를 아무것도 안써주면 현재날짜와 시간을 기준으로 만들어 줍니다.
DateTime date_create ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
1. DATE->TIMESTAMP
datetime을 가지고 timestamp를 만들때에는
int date_timestamp_get ( DateTimeInterface $object )
를 사용합니다.
인자에 datetime을 넣어주면 int형 timestamp로 생성합니다.
2. TIMESTAMP -> DATE
timestamp를 date로 변환할 때에는
DateTime date_timestamp_set ( DateTime $object , int $unixtimestamp )
를 사용합니다.
인자에 만들 datetime 변수와 timestamp를 넣어주면 변수에 변환된 datetime이 들어갑니다.
화면에 datetime을 출력할때에는
string date_format ( DateTimeInterface $object , string $format )
을 사용합니다.
인자에 datetime과 젤 위의 date()용 포맷들을 넣어주면 됩니다.
3. 날짜 계산하기
날짜의 계산은
DateTime date_add ( DateTime $object , DateInterval $interval ) 와
DateTime date_sub ( DateTime $object , DateInterval $interval ) 를
사용합니다.
date_add는 날짜를 더해주는 거고, date_sub는 날짜를 빼주는 역할입니다.
인자로는 datetime용 변수와 얼마를 더하고 뺄지를 정하는 interval을 적어주면 됩니다.
interval은 객체지향으로 쓸 때에는
public string DateInterval::format ( string $format )
을 사용합니다.
지원하는 포맷으로는 아래표와 같습니다.
formatcharacter | Description | Example values |
|---|---|---|
| % | Literal % | % |
| Y | Years, numeric, at least 2 digits with leading 0 | 01, 03 |
| y | Years, numeric | 1, 3 |
| M | Months, numeric, at least 2 digits with leading 0 | 01, 03, 12 |
| m | Months, numeric | 1, 3, 12 |
| D | Days, numeric, at least 2 digits with leading 0 | 01, 03, 31 |
| d | Days, numeric | 1, 3, 31 |
| a | Total number of days as a result of a DateTime::diff() or(unknown) otherwise | 4, 18, 8123 |
| H | Hours, numeric, at least 2 digits with leading 0 | 01, 03, 23 |
| h | Hours, numeric | 1, 3, 23 |
| I | Minutes, numeric, at least 2 digits with leading 0 | 01, 03, 59 |
| i | Minutes, numeric | 1, 3, 59 |
| S | Seconds, numeric, at least 2 digits with leading 0 | 01, 03, 57 |
| s | Seconds, numeric | 1, 3, 57 |
| R | Sign "-" when negative, "+" when positive | -, + |
| r | Sign "-" when negative, empty when positive | -, |
하지만 현재 주로 사용하는 절차식으로 할때에는
date_interval_create_from_date_string(interval)을 사용하면 됩니다.
interval 포맷은 String으로 적어주시면 됩니다.
위 예제의 결과입니다
'Study > php' 카테고리의 다른 글
| PHP] MySqli익스텐션 이용하기( 간단한 예제) (0) | 2015.10.07 |
|---|---|
| PHP] MySql 이용하기( 간단한 예제) (0) | 2015.10.05 |
| PHP ] GET, POST (0) | 2015.10.01 |
| PHP 파일 업로드및 파일 정보보기 (0) | 2015.10.01 |
| PHP 기초 ] 폴더제어 (0) | 2015.09.30 |