[PHP] Date Time

Seo Joonsoo·2022년 6월 19일
0

php

목록 보기
6/23

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();printr(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 부터 더이상 사용되지 않으므로 사용을 권장하지 않습니다.
해당 파싱 함수는 더이상 사용되지 않기 때문에 아래 함수 사용을 권장 드립니다.

  • date_parse_from_format(string $format, string $datetime): array
  • [객체지향적 사용]
    public IntlDateFormatter::parse(string string, int &offset = null): int|float|false
  • [절차지향적 사용]
    datefmt_parse(IntlDateFormatter formatter, string $string, int &offset = null): int|float|false

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/Time Arithmetic
DateTime class
DateTimeImmutable class

profile
여러분들 삶에 한 획을 더하고 싶습니다.

0개의 댓글