PHP ile iso 8601 formatında bir tarihi görüntülemek için nasıl

3 Cevap php

PHP ile bir iso 8601 format dizesi olarak benim MySQL veritabanı bir datetime görüntülemek için çalışıyorum ama yanlış dışarı geliyor.

1969-12-31T18 :33:28-06: 17 Ekim 2008 olarak çıkıyor açıkça doğru değildir 00 (2008 yılı değil, 1969 olmalı)

Bu ben kullanıyorum kodu:

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

$ Post [3] MySQL veritabanı datetime (CURRENT_TIMESTAMP) 'dir.

Herhangi bir fikir ne yanlış gidiyor?

3 Cevap

date ikinci argümanı bir UNIX timestamp değil, bir veritabanı damgası dizedir.

Sen strtotime ile veritabanı damgası dönüştürmek gerekir.

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

PHP sürüm 5.2 DateTime class kullanılabilir kullanarak bu gibi yapılabilir olacaktır:

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

See it in action

PHP 5.4 gibi bir tek-liner olarak yapabilirsiniz:

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

Önceden PHP 5 için:

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