質問

私はPHPとISO 8601フォーマットされた文字列としての私のMySQLデータベースから日時を表示しようとしているが、それは間違って出てきています。

1969-12-31T18:33:28から06:

2008年10月17日のように出ている、明らかに正しいではありません00(年がない1969 2008でなければなりません)。

これは私が使用しているコードです。

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

私のMySQLデータベースから$post[3] is the datetime (CURRENT_TIMESTAMP)ます。

任意のアイデア何が間違って起こっているの?

役に立ちましたか?

解決

dateするの第2引数はUNIXタイムスタンプではなく、データベースのタイムスタンプ文字列です。

あなたは、データベースのタイムスタンプがのstrtotime にして変換する必要があります。

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

他のヒント

<:

それはこのように行われますPHPのバージョン5.2で利用できるののDateTimeクラスを使用/ P>

$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));
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top