쇼핑몰 재고관리 프로그램을 PHP로 직접 짜서 사용하면서,
입출고 시 단순 시간 기록, 시간 계산에 함수를 사용하면서 참고 내용을 좀 찾아보았는데 나와있는 예제들이 실제와 좀 동떨어져 있는 경우가 많아 내 경우에 맞게 다시 정리했다.
PHP에서 현재시간을 출력하는 두가지 함수
한줄요약 : date()는 문자열 출력, time()은 타임스탬프(초단위)출력
date()함수
기능
문자열 형식으로 날짜와 시간값을 리턴한다.
사용법
사용법1 : date(날짜형식);
사용법2 : date(날짜형식, timestamp);
사용 예
MySQL DB를 사용할 때 24시간제 형식으로 문자열을 만들어서 DB에 넣고 빼는게 가장 편해서 그렇게 하고 있다.
내가 가장 자주 사용하는 네 자리 연도, 두 자리 월, 두 자리 날짜, 24시간제 두 자리 시간, 두 자리 분, 두 자리 초로 이루어진 아래와 같은 문자열을 출력하기 위해서는
2021-09-07 23:30:07
아래와 같은 코드를 사용하면 된다.
date("Y-m-d H:i:s");
엑셀 쓰던 것처럼 yyyy-mm-dd로 4 자리, 2 자리를 표현하는 방식은 아니다.
형식은 필요에 따라 자신에게 맞게 수정해서 쓰시라고 표로 정리했다.
구분 | 설명 | |
연(Year) | Y | 연도 네자리 (1998, 2021, 2022 …) |
연(Year) | y | 두자리 연도 (98, 21, 22 …) |
월 | m | 두자리 월 (02, 03, 12 …) |
월 | M | 세자리 영문자 월 (Feb, Mar, Dec) |
월 | F | 영문자 월 (February, March, December …) |
일 | d | 날짜 두 자리 (03, 15, 28 …) |
일 | z | 해당년의 몇번째 날인지 (1월 1일의 경우 ‘1′ 출력, 11월 26일 : ‘329‘ 출력) – 아래 사진 참조 |
요일 | D | 요일 영문자 세 자리 (Sun, Wed, Sat …)) |
요일 | I | 요일 영문자 (Sunday, Wednesday, Saturday …) |
오전/오후 | A | AM, PM |
오전/오후 | a | am, pm |
시간 | h | 시간 두 자리, 12시간 표기 (07, 02, 07, …) |
시간 | H | 시간 두 자리, 12시간 표기 (07, 12, 19, …) |
분 | i | 분 두 자리 |
초 | s | 초 두 자리 |
쉬어가기 : z? 해당 년의 몇 번째 날? 이런걸 누가 써?
의외로 제조업에서 이런 식의 날짜 표기를 쓴다.
아직 미국 외에는 이런 표기를 본적이 없는데
월-일로 관리하는 게 관리 측면에서 불편한게 있어서다.
한국은 년-주로 표기하는 경우는 종종 있다. 예를 들어 2021년의 50주 차 이면 ‘5021’로 표기하는 식.
유통기한이 짧은 식품의 경우는 저런 표기가 잘 없지만 유통기한이 3년, 5년 되는 화학제품, 타이어들이 저런 표기가 종종 있다.
time()함수
현재 시간을 초 단위(timestamp)로 출력한다.
예를 들어. 지금 이 글을 쓰는 시점인 2021-11-26 08:57:32는
‘1637884652’로 출력된다.
특정 두 시점의 시간 차이를 계산할 때 이런 timestamp형식이 계산하기가 편하다.
사용법
time();
사용 예
현재 시간을 일반적인 형식, timestamp형식 모두 출력해서 비교해보기
echo date("Y-m-d H:i:s"); echo "<br>"; echo time();
출력 결과
2021-11-26 09:01:40
1637884900
한 가지 주의해야 할 사항
date() 함수 이용 시
date("Y-m-d H:i:s");
라고 적어야 하는데 가끔
date("Y-m-d H:m:s");
로 적는 경우가 있다.
무엇이 잘못되었는지 보이는가?
‘분’표시를 i로 적지 않고 m으로 적는 실수이다.
엑셀 하면서 ‘분’을 m으로 표시하는 거에 익숙해져 있다 보면 하는 실수이다.