[PHP] 날짜 형식을 바꿔주는 date 함수

#PHP 에서 날짜 형식을 바꿔주는 #date 함수와 이 함수를 사용할 때 몇가지 팁을 정리해봅니다.

date

#date 함수는 특정 날짜를 입맛에 맛는 형식으로 바꿔서 표현해줍니다. 예를들어 내가 워드프레스에서 어떤 포스트를 작성하고 #get_posts 함수를 이용해 해당 포스트를 조회해 그 정보를 #post_date 로 표시하려고 하면(이런거 다 몰라도 됩니다.) 아래와 같이 표시됩니다.

2019-03-04 19:55:16

나는 포스트가 작성된 날짜만 표시 하고 싶은데 뒤에 작성 시간까지 표시가 되네요? 이 상황을 해결하는 방법은 여러개가 있습니다.

  1. post_date 의 값을 앞에서 부터 10개까지만 자라서 표시하기
  2. 날짜 형식을 바꿔서 표시하기

2번 방법으로 해결 하기 위해 필요한 함수가 #date 함수입니다.

기본 사용법

#date 함수의 기본 사용법은 아래와 같습니다.

date( [형식], [형식을 바꿀 날짜] )

투입 변수의 첫번째에는 내가 원하는 형식을 넣어주고, 두번째에 형식을 바꿔 표시하고 싶은 날짜를 넣어줍니다. 조금더 실전적인 예제를 보면 아래와 같습니다.

date( 'Y-m-d', $post -> post_date )

형식을 Y-m-d 로 지정한 것은 네자리의 연도(Y)와 두자리로 표기한 월(m), 두자리로 표기한 일(d)로 표시하라는 의미입니다.[1] PHP 에서의 날짜 표기 방법에 대한 자세한 형식은 참고자료의 1번 링크를 참고하세요.

오류

아주 간단한 함수지만 가끔 이게 무슨 상황이지 하는 오류가 발생 할 때가 있습니다.

날짜가 1970-01-01 로 표시 될 때

분명 두번째 투입 변수인 날짜를 잘 넣어주었는데도 불구하고 1970-01-01 과 같은 알 수 없는 날짜가 표시 될 때가 있습니다. 이는 두번째 투입 변수를 #PHP 가 날짜로 받아들이지 못해 발생하는 오류입니다.

이때는 #strtotime 함수를 이용해 문장 형태로된 날짜를 실제 날짜와 시간 형식으로 변환해주고, #date 함수를 이용하면 됩니다. strtotime 함수에 대한 자세한 내용은 참고자료 2번 링크를 참고하세요.

아래는 그 예제입니다.

date( 'Y-m-d', strtotime( $post -> post_date ) )

참고자료

  1. date, php.net
  2. strtotime, php.net
  3. [PHP] 문자열을 날짜와 시간으로 바꾸어 주는 strtotime 함수, 모두의매뉴얼
  1. 대문자와 소문자를 구분하니 조심하세요.