강좌와 팁

PHP 날짜 포맷 서식 날짜:2020-2-23 6:43:36 조회수:153
작성자 : 소엔
포인트 : 1368
가입일 : 2020-02-02 00:09:14
방문횟수 : 72
글 186개, 댓글 51개
소개 : SoEn 운영자입니다.
작성글 보기
쪽지 보내기
이번에 게시판을 만들면서 날짜를 섬세하게 다룰 일이 참 많더군요. 게시물 작성 시간이나 수정 시간을 기록해야 하고 화면이 별로 넓지 않다 보니 칸에 꼭 맞게 필요한 정보만 알뜰하게 출력해야 합니다. PHP에는 날짜를 자유롭게 포맷팅할 수 있는 함수와 많은 서식이 준비되어 있어 원하는대로 날짜 문자열을 만들 수 있어요.

date_format(날짜변수, "서식")

이런 식으로 사용하며 서식 자리에 다음 문자를 지정합니다. 대소문자를 구분하니 정확하게 적어야 합니다. 일상 생활에서 흔히 쓰는 날짜, 시간의 구조가 예상외로 복잡해서 서식이 좀 많습니다. 먼저 날짜 관련 서식입니다.

Y : 4자리 연도
y : 2자리 연도
L : 윤년이면 1, 아니면 0
m : 선행제로가 있는 월. 01~12
n : 선행제로가 없는 월. 1~12
M : 영문 3글자로 표시하는 월. Jan, Oct
F : 영문으로 표시하는 월. January, March
d : 선행제로가 있는 일. 01~31
j : 선행제로가 없는 일. 1~31
s : 일 접미사. st, nd, rd, th. 주로 j와 함께 사용
t : 월의 마지막 날 = 월의 일수
l(소문자 L) : 영문 요일. Monday, Sunday
D : 영문 세 글자 요일. Mon, Sun
w : 요일 숫자. 0(일) ~ 6(토)
N : 요일 숫자. 1(월) ~ 7(일)
z : 년초부터 경과일. 0~365
W : 년초부터 경과주


다음은 시간 관련 서식입니다.

g : 시간. 1~12
h : 시간. 01~12
G : 시간. 0~23
H : 시간. 00~23
a : 오전 오후 am/pm
A : 오전 오후 AM/PM
i : 분 00~59
s : 초 00~59
u : 마이크로 초


다음은 기타 서식입니다.
U : 유닉스 시간. 1970년 이후 경과초


이 정도만 하면 시간은 웬만큼 자유롭게 표현할 수 있습니다. 게시물 날짜를 출력하는 코드는 다음과 같습니다.

$nowyear = date("Y");
$postyear = date_format(new DateTime($list['writetime']), "Y");
if ($nowyear == $postyear) {
 $dateformat = "n/j g:i";
} else {
 $dateformat = "Y/n/j";
}
$tmpdate=date_format(new DateTime($list['writetime']), $dateformat);


현재 년도와 게시물의 년도를 구해 비교해 보고 올해 쓴 글인가 아닌가에 따라 포맷을 결정합니다. 올해 쓴 글이라면 굳이 년도를 표기할 필요는 없고 대신 시간을 같이 출력합니다. n/j g:i 포맷은 3/14 5:12 식으로 출력합니다. 월, 일, 시는 선행제로를 붙이지 않고 분만 선행제로를 붙였습니다. 03/14 05:12로 표기하면 괜히 길어지기만 합니다.

올해 쓴 글이 아니라면 년도까지 포함하여 날짜만 표기합니다. 3년전에 쓴 글의 시간까지 목록에 굳이 표시할 필요는 없으니까요. 게시물 읽기로 들어가면 시간까지 나오므로 목록은 이 정도면 충분합니다.
 



개발자의 천국 SoEn

목록보기 삭제 수정 신고 스크랩


로그인하셔야 댓글을 달 수 있습니다.