developer tip

PHP를 사용하여 날짜를 ISO 8601 형식으로 표시하는 방법

optionbox 2021. 1. 6. 08:04
반응형

PHP를 사용하여 날짜를 ISO 8601 형식으로 표시하는 방법


MySQL 데이터베이스의 datetime을 PHP를 사용하여 iso 8601 형식의 문자열로 표시하려고하는데 잘못 나옵니다.

2008 년 10 월 17 일은 다음과 같이 나옵니다. 1969-12-31T18 : 33 : 28-06 : 00 이는 분명히 정확하지 않습니다 (1969 년이 아닌 2008 년이어야 함).

이것은 내가 사용하는 코드입니다.

<?= date("c", $post[3]) ?>

$post[3] is the datetime (CURRENT_TIMESTAMP) 내 MySQL 데이터베이스에서.

무슨 일이 일어나고 있는지 아이디어가 있습니까?


의 두 번째 인수 date는 데이터베이스 타임 스탬프 문자열이 아니라 UNIX 타임 스탬프입니다.

strtotime으로 데이터베이스 타임 스탬프를 변환해야합니다 .

<?= date("c", strtotime($post[3])) ?>

PHP 버전 5.2에서 사용할 수 있는 DateTime 클래스를 사용하면 다음 과 같이됩니다.

$datetime = new DateTime('17 Oct 2008');
echo $datetime->format('c');

실제 모습보기

PHP 5.4부터는 한 줄로이 작업을 수행 할 수 있습니다.

echo (new DateTime('17 Oct 2008'))->format('c');

절차 적 스타일 :

echo date_format(date_create('17 Oct 2008'), 'c');
// Output : 2008-10-17T00:00:00+02:00

객체 지향 스타일 :

$formatteddate = new DateTime('17 Oct 2008');
echo $datetime->format('c');
// Output : 2008-10-17T00:00:00+02:00

하이브리드 1 :

echo date_format(new DateTime('17 Oct 2008'), 'c');
// Output : 2008-10-17T00:00:00+02:00

하이브리드 2 :

echo date_create('17 Oct 2008')->format('c');
// Output : 2008-10-17T00:00:00+02:00

메모 :

1) 형식 'Y-m-d\TH:i:sP'의 대안으로 사용할 수도 있습니다 'c'.

2) 입력의 기본 시간대는 서버의 시간대입니다. 다른 시간대에 대한 입력을 원하면 시간대를 명시 적으로 설정해야합니다. 그러나 이는 출력에도 영향을 미칩니다.

echo date_format(date_create('17 Oct 2008 +0800'), 'c');
// Output : 2008-10-17T00:00:00+08:00

3) 입력 한 시간대와 다른 시간대에 대한 출력을 원하면 시간대를 명시 적으로 설정할 수 있습니다.

echo date_format(date_create('17 Oct 2008')->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2008-10-16T18:00:00-04:00

PHP 5 이전 :

function iso8601($time=false) {
    if(!$time) $time=time();
    return date("Y-m-d", $time) . 'T' . date("H:i:s", $time) .'+00:00';
}

다음은 PHP 5 이전의 좋은 기능입니다. 마지막에 GMT 차이를 추가했지만 하드 코딩되지 않았습니다.

function iso8601($time=false) {
    if ($time === false) $time = time();
    $date = date('Y-m-d\TH:i:sO', $time);
    return (substr($date, 0, strlen($date)-2).':'.substr($date, -2));
}

참조 URL : https://stackoverflow.com/questions/903203/how-to-display-a-date-as-iso-8601-format-with-php

반응형