0

重複の可能性:
PHP で SQL タイムスタンプをフォーマットする

デフォルトの現在のタイムスタンプ値を持つ SQL テーブルに列があります。を使用して、より読みやすい形式で出力しようとしていますdate()

ただし、使用する形式に関係なく、常に同じ日付を取得します。1970-01-01 00:33:32

DB からの現在のタイムスタンプの値の例を次に示します。2012-08-09 06:37:58

以下は、読み取り可能な形式に「変換」するために使用するコードです。

$value['current_date']// is the var from the database.(containing 2012-08-09 06:37:58)
$somevar = date('Y-m-d H:i:s', $value['current_date']);

前もって感謝します。

4

3 に答える 3

1

問題は、2 番目のパラメーターで間違った値を使用していることです。date() 関数は、日付の文字列表現ではなく、UNIX スタイルのタイムスタンプを 2 番目のパラメーターとして想定しています。これを修正するには、 strtotime() 関数を使用します。

$somevar = date('Y-m-d H:i:s', strtotime($value['current_date']));

しかし、他の誰かが指摘したように、なぜわざわざこのフォーマットを行うのですか? 必要な書式スタイルは既にデータベースにあります。次のように簡単です。

echo $value['current_date'];
于 2012-08-11T02:49:23.293 に答える
0

まず第一に、タイムスタンプが既に目的の形式で存在する場合、なぜタイムスタンプをフォーマットするのでしょうか?

実際の問題について:

http://de2.php.net/manual/en/function.date.phpを参照してください。

date()unix タイムスタンプ (1970-1-1 00:00:00 UTC からの秒数) のみを受け入れるか、タイムスタンプをまったく受け入れません。あなたが持っているようなタイムスタンプで作業したい場合は、最初に、、、またはでUNIXタイムスタンプを作成する必要がdate_create()ありmktimeますstrtotime

于 2012-08-11T02:50:59.440 に答える
0

あなたが抱えている問題は、 の 2 番目の引数がdate()タイムスタンプである必要があり、 を含む生の文字列を渡しているため2012-08-09 06:37:58、php はそれをどうすればよいかわかりません。

以下のようにコードを変更すると、動作するはずです。

$somevar = date('Y-m-d H:i:s', strtotime($value['current_date']));

'Y-m-d H:i:s'必要に応じて、代わりに任意の日付形式を使用できるようになりました

于 2012-08-11T02:51:09.860 に答える