8

"timestamp"名前が 、タイプがtimestamp、属性がon update CURRENT_TIMESTAMP、デフォルトがの MySQL DB テーブルがありますCURRENT_TIMESTAMP

タイムスタンプではなく他の値を指定してテーブルにレコードを追加すると、タイムスタンプは のように自動的に追加され2016-12-28 17:02:26ます。

PHP では、次のクエリを使用してテーブルをクエリします

SELECT * FROM history WHERE user_id = 9 ORDER BY timestamp ASC

クエリの結果は に保存され$rows、a を使用しforeachて他の値を書式設定した配列を作成します。タイム スタンプを英国タイプの 24 時間形式の日時にフォーマットしようとしています: dd/mm/yy, HH:MM:SS.

次のように関数date()と関数の両方を試しました。strftime()

$formatted_datetime = strftime("%d %m %y  %H %M %S", $row["timestamp"]); 
$formatted_datetime = date("d/m/y, H:i:s", $row["timestamp"]);

これらは両方とも、次のような通知と日付時刻が誤って出力されるという結果になります01 01 70 00 33 36

注意: /home/ubuntu/workspace/pset7/public/history.php の 20 行目に、整形式でない数値が見つかりました

私は PHP と MySQL を初めて使用しますが、これまでに見た他の質問やドキュメントのいずれも、この変換の実行にうまく対処していstrftime()ません。

4

5 に答える 5

4

通常、MySQL の日付タイムスタンプでは時間を形式として保存します。日付YYYY-MM-DD HH:MM:SS (2016-12-20 18:36:14)形式を使用して希望どおりに簡単に変換できますが、最初に入力を時間に変換する必要があります。以下はトリックを行います

$formatted_datetime = date("d/m/y, H:i:s", strtotime($row["timestamp"]));
于 2016-12-28T17:45:58.447 に答える
3

MySQL に仕事をさせてみませんか? そして、本当に dd/mm/yy ではなく、mm/dd/yy が必要ですか?

SELECT *, DATE_FORMAT(timestamp, '%m/%d/%y, %T') formatted_date FROM ....

次に、フォーマットされた日付を $row['formatted_date'] として抽出できます。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-formatを参照してください

于 2016-12-28T18:03:37.933 に答える
0

Carbon クラスとその String Formattingを使用します。

$carbon = Carbon::instance('2016-12-28 17:02:26');

その後、必要に応じてフォーマットできます。

于 2016-12-28T17:58:35.230 に答える