홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
시간함수 활용하기...
11년 전
웹프로그램에서 시간함수는 여러가지로 사용이 됩니다.
그쵸?^^

언제?.....-_-?

게시판에 글을씁니다......그럼 글쓴 시간이 기록되죠;;;

아니면 뭐 지금 시간을 표시 한다던가....
월드컵은 몇일이 남았고......누구누구가 만난지 몇일이 되더라...

뭐 이런걸 하는데 쓸수 있다 이거죠;;;

php에서 이런 시간을 가져오는 함수는 date()와 time()이 있습니다.
(-_-a 더 있을지도;;)
그중에서 date()에 대해서 집중적으로-_-! 알아보겠습니다.

다른분들은 모르겠는데 전 time()보단 date()를 많이 쓰기때문에^^;

먼저 Unix timestamp 라는게 있습니다...
읽으면;;; 유닉스타임스탬프;;;; -_-a;;;

이건 별건 아니고.....기준시를 말하는건데...
1970년 1월 1일 09시 00분 00초...부터 지금 현재시점까지를 초로 환산 한것 입니다.

@_@계산해보세요 얼마나 나올런지;;;

암튼 전체적으로 그 유닉스타임만 알면 현재 년도 날짜 시간 분 초까지 다 알아낼수가 있는것이죠... 그쵸?
(나누기 몇번 하다보면 다 나온다 그거죠^^)

암튼....그래서 상당히 유용하고 간편하게 사용할수 있는게 유닉스타임입니다.
그럼 구해볼까요?

<?
$unix_time=time();
echo $unix_time;
?>

-_-이게 다입니다.....그냥 echo time(); 라고 하셔도 상관없겠죠...
이렇게 하면 현재 시간이 유닉스 타임으로 떠억~찍혀집니다.
근데 그걸 사람이 알아 듣기엔...좀 무리죠;;;
언제 그걸 다 나누기 하고 앉아있겠습니까.......자 가공합시다!

date()라는건 간편하게 현재 시간을 가공해 줍니다.
일단 date()함수로 유닉스타임스탬프를 구해볼까요~

<?
echo date('U');
?>

(U는 대문자 입니다...주의하세요;;)
이렇게 하면 echo time()과 같은 결과를 내줍니다.
결국 time()과 date('U')는 같은 거겠죠....

그럼 이걸 한번 실행해 볼까요?

<?
echo date('Y-m-d');
?>

결과는?

2001-10-15  

이런식일 겁니다...현재 년 월 일이 나오죠...
이런식으로 date()함수에 매개변수를 넣어주면 그대로 가공되어 나옵니다.
그럼 어떤 매개 변수가 있을까요?;;;  밑으로 쭈우욱~~~

a
"am" 또는 "pm"

A
"AM" 또는 "PM"

d
두자리로 표현되는 날짜, 즉 "01"~"31"

D
세글자로 표현되는 요일, 즉 "Fri"

F
월을 긴 문장으로 나타냅니다. 즉 "January"

h
시간을 12시간 단위로 나타냅니다. "01"~"12"

H
시간을 24시간 단위로 나타냅니다.

g
시간을 12시간 단위로 0 없이 나타냅니다. "1"~"12"

G
시간을 24시간 단위로 0 없이 나타냅니다. "0"~"24"

i
분을 나타냅니다. "00"~"59"

j
날짜를 0 없이 나타냅니다. "1"~"31"

l
(L의 소문자)요일을 나타냅니다. "Friday"

L
윤년인지의 여부를 나타냅니다. "0" 또는 "1"

m
달을 나타냅니다. "01"~"12"

n
0 없이 달을 나타냅니다. "1"~"12"

M
3글자로 달을 나타냅니다. "Jan"

s
초를 나타냅니다. "00"~"59"

S
영어에서 순서를 나타내는 2글자로 된 접미사; "th", "nd"

t
주어진 달의 날 수; 즉 "28"~"31"

U
기준시점(GMT 1970년 1월1일 00:00:00)으로부터 지난 시간을 초로 표시

w
요일을 숫자로 표시합니다. 즉 "0"(일요일) ~ "6"(토요일)

Y
4글자로 연도표시, "1999"

y
2글자로 연도표시, "99"

z
날짜를 표시, "0"~"365"

Z
지역간의 시간편차를 초단위로 표시, 즉 "-43200"~"43200"


헥헥.......복사해다가 붙이느라고 힘들었습니다 -_-;;

암튼 웬만한건 외워 두시는게 좋겠죠;;;

한가지 중요한건 지금 시간이든 뭐든 시간을 파일이나 어디에 저장할때에는 유닉스타임스탬프로 저장해두는게 좋습니다.

예를 들어 볼까요?

제가 지금 글을 썼습니다....그래서 글쓴 시간을 저장합니다..
저장할때는 유닉스타임스탬프로;;;  
그러니까 $time=time();이라고 해놓고 $time값을 저장하면 되겠죠?...

이제 그걸 꺼내서 년-월-일 형식으로 화면에 보여줍니다...
이렇게 하면 됩니다...

<?
echo date('y-m-d',$time);
?>

위와 같이 해주시면 유닉스타임스탬프인 $time가 년-월-일 형식으로 가공되어 화면에 출력됩니다...

+_+신기하죠;;;; (-_-a아닌가..)

그럼 이번엔 좀 다른걸 해볼까요;;

2001년 5월 13일부터 지금까지 몇일이나 지났는가를 구하는 프로그램을 짜볼까요...?

어떻게 해야하죠?+_+;;

-_-a;;;;대충 date를 써야 할것 같긴한데.....애매하죠;;;
쉽게 생각해보죠;;;

현재날짜-2001년5월13일=답

그쵸?....근데 날짜가 이렇게 더하기 빼기가 되는것도 아니죠;;
또 문제가 있습니다. 날짜에서 날짜를 뺀다고 해도....시간이 문제죠
지금이 오후 10시라면 정확이 2001년5월13일10시를 빼주어야 합니다.
1초라도 차이가 나면 정확한 답이 나오지 않겠죠....

mktime()이라는 함수가 있습니다.
이건 주어진 시간정보를 갖고 그시간의 유닉스타임스탬프를 구해줍니다.
형식은....

mktime(시,분,초,월,일,년)

요렇습니다.... 순서가 좀 헷갈리죠...년월일시분초...면 좋은데;;;
저건 아마도 영어식 표기순서겠죠^^........-_-;;서양애들이란;;;

<?
$time=mktime(0,0,0,5,13,2001);
?>

자 위와 같이 해주면....2001년 5월 13일 00시 00분 00초의 유닉스타임스탬프값이 $time에 들어갑니다.
엇...그런데 이게 아니죠.....아까 말했듯이 시,분,초는 현재 시간과 같게 해주어야 합니다.....그래야 몇일인지 계산이 되겠죠....^^?
그래서 이렇게 맞춰 줍니다....

<?
$h=date('H');
$i=date('i');
$s=date('s');
$time=mktime($h,$i,$s,5,13,2001);
?>

보시면 알겠지만...$h에는 현재시간, $i에는 분, $s에는 초를 넣어주고 $time값에 2001년5월13일의 현재 시간과 같은 시점의 유닉스타임스탬프가 들어가겠죠....헉헉;;;

@_@뭔얘긴지 아시죠?...
지금이 12시23분45초라면 $time에는 2001년5월13일12시23분45초의 유닉스타임스탬프가 들어간다는 것입니다.

그런데 여기서 주의하실것은 h와 H입니다. h는 am과 pm이 무시되고 표시되는것인데 낮12시도 12이고 밤12시도 12입니다...
이렇게 나오면 곤란하겠죠....? 잘못하면 계산상의 오차가 12시간이 될수 있습니다...-_-오로~~
그래서 꼭 대문자 H를 써주어야 한다는거죠....요놈은 0~24시까지 표현해 줍니다....그래야 계산이 되겠쬬~

자 암튼.....이렇게 시간을 구해놨으니 그냥 빼면 됩니다.....
뺍시다!!

<?
$h=date('H');
$i=date('i');
$s=date('s');
$time=mktime($h,$i,$s,5,13,2001);
$now=time();
$day=($now-$time)/24/60/60;
echo $day;
?>

@_@아따 복잡해 졌네요...막 나누기 나오고 그러니까 어지러우시죠 -_-;
차근차근 보죠;;;
일단 $time변수나오는 부분까지는 위소스와 같습니다...

$now=time();는 현재 유닉스 타임스탬프를 $now에 집어 넣는거죠...
그리고 빼주게 되겠죠?

$day=($now-$time)/24/60/60;

$day라는 값에 일단 결과를 넣는것입니다.
($now-$time)은....현재시간에서 5월13을 빼주는 거죠........
그런데 이렇게 빼버리면 몇일......이렇게 나오는게 아니라.....
몇초......-_-이렇게 나오죠;;;; 왜냐 유닉스타임스탬프로 뺐으니까;;;

이제 이...몇초..로 나온놈을 몇일로 바꿔주어야죠...간단한 산수 입니다.
퀴즈하나 내죠.......

1분은 몇초?-_-?

60초.......-_-오호호호....쉽게 맞추시네요;;

1시간은 몇분?

60분.....맞죠...

1일은 몇시간?....

^^네 24시간........짝짝짝.....

정리해보죠;;;
초를 일로 환산하려면......초/24/60/60=일

-_-?초등학교 나오셨죠?....

그냥 그겁니다......
$day=($now-$time)/24/60/60;
그쵸?^^

그래서 결론적으로 $day라는 값에 몇일...이냐 라는게 들어가는거고
이 연산에서는 절대 나머지가 나오지 않고 딱~ 정수로 떨어지게 되어있습니다.....왜죠?.........아까 초까지....시간을 맞춰놓고 뺐죠...
그러니까 어쩌다가 하루가 23시간 59초가 된다거나 하지 않는 이상은 절대 나머지나 소숫점이 나올리가 없다는 거죠.....

그래서 결국 2001년5월13일부터 오늘 까지 몇일이 지났나......하는걸 알아내게 됩니다.....
흠흠.....뭔 기념일 챙기실때 쓰시면 좋을듯 하네요..^^

한번 이런것도 생각해보세요...2002년 월드컵까지 몇일 남았나....
뭐......똑같은거겠죠;;;

자....그외에도 이 시간...이라는것은 이렇게로도 쓰입니다.
어떤것에 특정한 아이디를 부여할때 말이죠;;

이 시간이란걸 쓰면 참 편하겠죠...
중복될 염려도 없고요.....

어떤것에 각각의 고유한 아이디를 줄때 유닉스타임스탬프값을 아이디로 줍니다. 웬만해서 겹칠리가 업겠죠...
그런데 만약 정확히 1초의 오차도 없이 같은시각에 아이디를 주게 된다면 -_-a;;;

그럴땐 좀더 확율을 줄여줘버리면 됩니다.
microtime() 이라는 함수는 마이크로세컨드 단위로 지금 시간을 알려줍니다. 훨씬 중복되기 힘들겠죠?

getMicroTime() 이라는 함수를 그냥쓰셔도 되고....
echo getMicroTime();

그냥 이렇게 하셔도 됩니다.
echo (double)microtime();
추천추천 : 315 추천 목록
번호 제목
3,033
 PHP 정규식 정리
3,032
 PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
3,031
 php 크롤링 또는 파싱 함수, 정규식 모음
3,030
 제이쿼리 기본 명령어
3,029
 웹페이지 가로 모드세로 모드 인식하기
3,028
 모바일 웹 화면 강제 회전(가로모드 고정)
3,027
 [HTML5]에서 frameset 대체 방법과 iframe 속성
3,026
 HTML <Audio> 사용법
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.