Chillax in dev

[php] 문자열 날자 데이터로 저장하기 본문

PHP & MySQL

[php] 문자열 날자 데이터로 저장하기

Seong Story 2023. 7. 7. 09:51
728x90

[php] 문자열 날자 데이터로 저장하기

 

흔히 기간에 대한 데이터를 저장할 때 php의 date()와 strtotime()을 많이 활용합니다. 

단순하게 2023-07-06 11:00:00 와 같이 날자, 시간, 분 초까지 문자열을 DATETIME 타입으로 변환하여 저장하고 싶을 때 어떻게 할까요?

 

Y-m-d H:i:s  형식으로 문자열을 날자데이터로 저장합니다.

<?php 
 $start_day = "2023-07-06";
 
 $start_hour = "11";
 
 $val = date("Y-m-d H:i:s",strtotime($start_day." ".$start_hour.":00:00"));
 
 echo $val;
// 2023-07-06 11:00:00

?>

 반드시 date 포멧에 맞춰주자!  Y-m-d H:i:s  형식으로  문자열을 맞춰주면 됩니다.

 

date() 함수 

PHP에서 date() 함수를 사용하면 현재 날짜와 시간에 대한 정보를 다양한 형식으로 출력할 수 있습니다. 

다음은 date() 함수의 사용법입니다.

<?php
 echo date("Y-m-d H:i:s"); //현재 날짜와 시간을 Y-m-d H:i:s 형식으로 출력합니다.
?>

위 코드에서 Y는 연도, m은 월, d는 일, H는 24시간 형식의 시간, i는 분, s는 초를 나타내는 문자열입니다.

이러한 문자열을 원하는 형식으로 조합하여 출력하면 됩니다.

예를 들어, date("Y년 m월 d일 H시 i분 s초") 형식으로 작성하면 "2021년 9월 6일 15시 25분 30초"와 같이 출력됩니다.

위와 같이 date() 함수는 다양한 형식으로 날짜와 시간 정보를 출력할 수 있으므로 필요한 형식을 선택하여 사용하면 됩니다.

 

strtotime() 함수 

PHP에서 strtotime() 함수는 일시를 나타내는 문자열을 Unix 타임스탬프로 변환해 주는 함수입니다. 

이 함수는 PHP에서 날짜와 시간을 다룰 때 유용하게 사용됩니다.

 strtotime() 함수의 사용법은 다음과 같습니다.

<?php

	$date_string = "2021-04-10 15:30:00";

	$timestamp = strtotime($date_string);

	echo $timestamp; // 출력 결과: 1618095000

?>

위의 코드에서는 "2021-04-10 15:30:00"이라는 문자열을 strtotime() 함수로 넘겨서 해당 일시에 대한 Unix 타임스탬프를 구하였습니다.

타임스탬프는 1618095000이며, 이 값을 이용하여 다양한 연산을 수행할 수 있습니다.

 

time() 함수 

PHP에서 time() 함수는 현재 시각의 Unix 타임스탬프를 반환하는 함수입니다. 

이 함수는 날짜와 시간을 처리하는 데 있어 가장 기본적인 함수 중 하나입니다. 

time() 함수의 사용법은 다음과 같습니다.

 

time() 함수는 매개변수 없이 호출되며, 현재 시간에 해당하는 Unix 타임스탬프를 반환합니다. 이 값을 이용하여 다양한 연산을 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

<?php

	$timestamp = time();

	$date_string = date("Y-m-d H:i:s", $timestamp);

	echo $date_string; // 출력 결과: 2021-04-10 16:30:00

?>

위의 코드에서는 time() 함수를 이용해서 현재 시각에 해당하는 Unix 타임스탬프를 구하고, date() 함수를 이용해서 이 값을 사람이 읽을 수 있는 포맷으로 변환하였습니다. 출력 결과는 "2021-04-10 16:30:00"과 같이 나타납니다.

 

strtotime() 함수 vs time()  함수 차이점

PHP의 time() 함수와 strtotime() 함수는 모두 시간과 관련된 기능을 수행하는 함수이지만, 동작 방식에 차이가 있습니다.

time() 함수는 현재 시각의 Unix 타임스탬프를 반환하는 반면, strtotime() 함수는 문자열로 표현된 시간을 Unix 타임스탬프로 변환합니다.

즉, time() 함수는 호출하는 시점의 시각에 대한 타임스탬프를 반환하고, strtotime() 함수는 인자로 전달된 문자열에서 시간 정보를 추출하여 그 시각에 대한 타임스탬프를 반환합니다.

예를 들어, 현재 시각에 대한 Unix 타임스탬프를 구하는 경우 time() 함수를 사용하면 되고, 

"2021-04-10 15:30:00"과 같은 문자열로 표현된 시간에 대한 Unix 타임스탬프를 구하는 경우 strtotime() 함수를 사용하면 됩니다.

<?php
	$current_timestamp = time();
	echo $current_timestamp; // 현재 시각의 Unix 타임스탬프 출력

	$date_string = "2021-04-10 15:30:00";
	$timestamp = strtotime($date_string);
	echo $timestamp; // 문자열로 표현된 시각의 Unix 타임스탬프 출력
?>

 

mktime() 함수

PHP에서 mktime() 함수는 주어진 시간과 날짜에 해당하는 Unix 타임스탬프를 반환하는 함수입니다.

이 함수를 사용하면, 시간과 날짜를 직접 지정해서 타임스탬프를 생성할 수 있습니다. mktime() 함수의 사용법은 다음과 같습니다.

$timestamp = mktime($hour, $minute, $second, $month, $day, $year);

$hour, $minute, $second, $month, $day, $year 매개변수는 각각 생성하고자 하는 Unix 타임스탬프의 시간과 날짜를 지정합니다. 예를 들어, "2021년 4월 9일 오후 3시 30분 0초"에 대한 Unix 타임스탬프를 생성하려면 다음과 같이 mktime() 함수를 사용할 수 있습니다.

<?php
	$timestamp = mktime(15, 30, 0, 4, 9, 2021);
	echo $timestamp; // 출력 결과: 1617973800
?>

위 코드에서는 mktime(15, 30, 0, 4, 9, 2021) 로 "2021년 4월 9일 오후 3시 30분 0초"에 대한 타임스탬프를 생성하였습니다. 이때 반환된 값은 1617973800이며, 이 값을 이용하여 다양한 연산을 수행할 수 있습니다. 또한, mktime() 함수는 선택적으로 $is_dst 매개변수를 지원합니다.

이 매개변수는 Daylight Saving Time (DST)를 고려하여 타임스탬프를 생성할지 여부를 지정하는 데 사용됩니다.

기본값은 -1로, PHP 설정 파일에서 설정된 값에 따라 DST를 고려하거나 고려하지 않습니다.

 

정리

php의 날자 관련  기본적 함수를 알아봤습니다.

  1. date() 함수: 주어진 포맷에 따라 날짜와 시간을 표시합니다. 예를 들어, date("Y-m-d H:i:s")과 같이 사용하면 현재의 날짜와 시간을 "2021-04-10 16:30:00"과 같은 포맷으로 반환합니다.
  2. time() 함수: 현재 시간의 Unix 타임스탬프를 반환합니다.
  3. strtotime() 함수: 앞서 설명했듯이, 문자열 형태의 날짜와 시간을 Unix 타임스탬프로 변환합니다.
  4. mktime() 함수: 지정된 시간의 Unix 타임스탬프를 반환합니다.
  5. 이 외에도 gmdate(), strftime(), getdate() 등의 다양한 함수가 존재합니다. 이 함수들은 각각 특정한 기능을 수행하므로, 필요에 따라 적절한 함수를 선택하여 사용하시면 됩니다.
728x90
LIST
Comments