날짜를 PHP로 ISO 8601 형식으로 표시하는 방법
-
05-09-2019 - |
문제
MySQL 데이터베이스에서 DateTime을 PHP와 함께 ISO 8601 형식의 문자열로 표시하려고하지만 잘못되었습니다.
2008 년 10 월 17 일은 다음과 같이 나옵니다.
이것은 내가 사용하는 코드입니다.
<?= date("c", $post[3]) ?>
$post[3] is the datetime (CURRENT_TIMESTAMP)
내 MySQL 데이터베이스에서.
무엇이 잘못되고 있는지 아이디어가 있습니까?
다른 팁
사용 DateTime 클래스 PHP 버전 5.2에서 사용할 수 있습니다.
$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 PRE 5의 경우 :
function iso8601($time=false) {
if(!$time) $time=time();
return date("Y-m-d", $time) . 'T' . date("H:i:s", $time) .'+00:00';
}
PHP PRE 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));
}
제휴하지 않습니다 StackOverflow