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
'developer tip' 카테고리의 다른 글
ASCII 아트 이미지 변환 알고리즘은 어떻게 작동합니까? (0) | 2021.01.06 |
---|---|
WPF의 바인딩 된 컨트롤에 대한 강제 유효성 검사 (0) | 2021.01.06 |
Windows 배치 파일에서 문자열을 공백으로 분할하는 방법은 무엇입니까? (0) | 2021.01.06 |
웹 워커를 디버깅하는 방법 (0) | 2021.01.06 |
여러 조건이있는 if의 실행 순서 (0) | 2021.01.06 |