티스토리 뷰

오늘도 개발자/PHP

[PHP] Date Time

오늘도공대생 2022. 1. 28. 01:09

time은 1970년 1월 1일 00:00:00 부터 경과한 시간을 수치로 변환해준다.

이를 Unix Timestamp라 부른다.

echo $time = time();
// result : 1643292886

localtime을 이용해 현재시간에 대한 값을 Array 형태로 받을 수 있다.

localtime 첫번째 인자는 timestamp를 의미하고 두번째 인자의 경우 생략하여도 되지만 true값을 넣어주면 key가 index Key에서 tm_xxx 형태로 변경된다.  ex) tm_min => int(23)

echo $time = time();
var_dump( localtime($time, true)); 
 
 /*
array(9) {
  'tm_sec' =>
  int(45)
  'tm_min' =>
  int(5)
  'tm_hour' =>
  int(1)
  'tm_mday' =>
  int(28)
  'tm_mon' =>
  int(0)
  'tm_year' =>
  int(122)
  'tm_wday' =>
  int(5)
  'tm_yday' =>
  int(27)
  'tm_isdst' =>
  int(0)
}
 */

 

 

타임존 세팅

date_default_timezone_set(string $timezoneId): bool

모든 날짜/시간 함수가 사용하는 기본 시간대를 설정한다.

타임존에 대한 목록은 이곳에서 볼 수 있다. => 'List of Supported Timezones'

date_default_timezone_set('Asia/Seoul');
Date_default_timezone_get();

date_default_timezone_get(): string

우선 순위에 따라 이 함수는 다음과 같은 방법으로 기본 시간대를 반환합니다.

 

getdate()

입력받은 timestamp의 정보를 연관 배열로 반환합니다.

 

$today = getdate();
print_r($today);

/* output to:
Array
(
    [seconds] => 40
    [minutes] => 58
    [hours]   => 21
    [mday]    => 17
    [wday]    => 2
    [mon]     => 6
    [year]    => 2003
    [yday]    => 167
    [weekday] => Tuesday
    [month]   => June
    [0]       => 1055901520
)
*/

 

mktime

지정한 날짜에 대한 Unix 타임스탬프를 만드는 방법은 아래와 같습니다.

mktime(
    int $hour,
    ?int $minute = null,
    ?int $second = null,
    ?int $month = null,
    ?int $day = null,
    ?int $year = null
): int|false

인수는 오른쪽에서 왼쪽으로 순서대로 생략할 수 있습니다. 따라서 생략된 모든 인수는 현지 날짜 및 시간에 따라 현재 값으로 설정됩니다.

인수 없이 mktime() 을 호출 하는 것은 더 이상 사용되지 않습니다. time() 을 사용하여 현재 타임스탬프를 얻을 수 있습니다.

 

 

checkdate(int $month, int $day, int $year): bool

날짜 검증 함수가 빠질 수 없겠죠? 인수로 구성되 날짜의 유효성을 확인합니다. 각 매개변수가 올바르게 정의되면 날짜가 유효한 것으로 간주됩니다.

month : 월은 1에서 12 사이입니다.

    day : 날짜가 지정된 month에 대해 허용된 일 수 내에 있습니다. year이 고려됩니다.

   year : 연도는 1에서 32767 사이입니다.

var_dump(checkdate(12, 31, 2000));	// bool(true) 
var_dump(checkdate(2, 29, 2001));	// bool(false)

 

strftime

매개변수를 통해 다양한 형식으로 시간 또는 날짜를 지정할 수 있습니다. 

하지만, PHP 8.1.0 부터 더이상 사용되지 않으므로 사용을 권장하지 않습니다.

 

 

 

strptime(string $timestamp, string $format): array|false

PHP 8.1.0 부터 더이상 사용되지 않으므로 사용을 권장하지 않습니다.

해당 파싱 함수는 더이상 사용되지 않기 때문에 아래 함수 사용을 권장 드립니다.

 

 

microtime(bool $as_float = false): string|float

microtime() 은 현재 Unix 타임스탬프를 마이크로초 단위로 반환합니다. 

이를 활용해 스크립트 실행 시간 측정해 성능을 측정하곤 합니다.

하지만, 성능 측정의 경우 hrtime()의 사용을 권장합니다.

 

hrtime(bool $as_number = false): array|int|float|false

임의의 시점에서 계산된 시스템의 고해상도 시간을 반환합니다. 전달된 타임스탬프는 심플하고 조정할 수 없습니다.

echo hrtime(true), PHP_EOL;
print_r(hrtime());
/* 결과
10444739687370679
Array
(
    [0] => 10444739
    [1] => 687464812
)
*/

 

 

 


Date and Time

'오늘도 개발자 > PHP' 카테고리의 다른 글

[PHP] 세션 (Session)  (0) 2022.01.28
[PHP] 네트워크 (Network)  (0) 2022.01.28
[PHP] 함수 Function  (0) 2022.01.27
[PHP] 값 검증 : Validate와 Sanitize (Data Filtering)  (0) 2022.01.27
[PHP]CSPRNG (rand와 random_int 차이)  (0) 2022.01.26
댓글