467

datetimeMySQLに列があります。

PHPを使用してmm/dd / yy H:M(AM / PM)として表示に変換するにはどうすればよいですか?

4

18 に答える 18

546

日付を MySQL 形式に正規化する方法を探している場合は、次を使用します。

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

この行$phpdate = strtotime( $mysqldate )は文字列を受け取り、一連のヒューリスティックを実行してその文字列を UNIX タイムスタンプに変換します。

この行$mysqldate = date( 'Y-m-d H:i:s', $phpdate )は、そのタイムスタンプと PHP のdate関数を使用して、そのタイムスタンプを MySQL の標準の日付形式に戻します。

編集者注:この回答は、元の質問が紛らわしい言い回しであり、現在存在する質問に直接回答していなくても、この回答が提供した一般的なGoogleの有用性のためにここにあります)

于 2011-03-20T06:06:08.663 に答える
320

MySQLから取得した日付を要求された形式に変換するには(mm/dd/yy H:M (AM/PM)):

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

フォーマットを調整するには、 PHPの日付フォーマットオプションを参照してください。

于 2008-09-25T23:30:09.330 に答える
115

PHP 5を使用している場合は、試すこともできます

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
于 2008-09-26T04:31:21.397 に答える
48
$valid_date = date( 'm/d/y g:i A', strtotime($date));

参照: http: //php.net/manual/en/function.date.php

于 2013-03-01T13:02:44.070 に答える
11

より簡単な方法は、PHPではなくMySQLクエリで日付を直接フォーマットすることです。DATE_FORMATについては、MySQLの手動エントリを参照してください。

PHPで実行したい場合は、date関数が必要ですが、最初にデータベース値をタイムスタンプに変換する必要があります。

于 2008-09-25T23:15:23.950 に答える
10

すべて忘れてください。使用するだけです:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
于 2012-09-14T08:58:35.093 に答える
9

MySQL に格納するために PHP でオブジェクトを正しくフォーマットするDateTimeには、MySQL が使用する標準化されたフォーマットであるISO 8601を使用します。

PHP では、バージョン 5.1.1 以降、この形式が定数として格納されています。文字列を毎回手動で入力するよりも、この形式を使用することを強くお勧めします。

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

これとその他の PHP DateTime 定数のリストは、http://php.net/manual/en/class.datetime.php#datetime.constants.typesで入手できます。

于 2013-05-31T17:42:08.893 に答える
8

これにより、SQL クエリのフィールドがフォーマットされます。

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
于 2011-11-08T20:07:29.563 に答える
7

日付関数を使用します。

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
于 2008-09-25T23:16:05.197 に答える
5
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

PHP コードのすべての関数を変更したくない場合は、予想される日付形式を表示するには、ソース (データベース) で変更します。

上記の例のように、 as演算子を使用して行に名前を付けることが重要です (as dateFrom、as dateUntil)。そこに書く名前は名前であり、行は結果で呼び出されます。

この例の出力は次のようになります。

[日付、数値 (0..31)].[月名 (1 月..12 月)].[年、数値、4 桁]

例: 2015 年 8 月 5 日

選択した区切り記号でドットを変更し、DATE_FORMAT(date,format)関数でその他の日付形式を確認します。

于 2015-07-09T18:12:37.417 に答える
5

MySQL の datetime 構成によって異なります。通常: 2011-12-31 07:55:13形式。この非常に単純な関数は魔法を行うはずです:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

または、質問に合わせてもう少し進んでください。

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
于 2014-01-23T19:49:47.217 に答える
3

クエリで時刻をUnixタイムスタンプとして返​​すようにすることもできます。これにより、呼び出しの必要性がなくなりstrtotime()、PHP側での集中力が少し低下します...

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

次に、PHPでは、date()関数を使用して、任意の方法でフォーマットします。

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

また

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

MySQLの関数を使用するのではなく、このアプローチが好きDATE_FORMATです。同じクエリを再利用してデータを取得し、PHPのフォーマットを変更できるからです。

UIでの日付の表示方法を変更するためだけに、2つの異なるクエリを実行するのは面倒です。

于 2008-09-25T23:57:03.960 に答える
1

これは動作します...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
于 2014-03-12T06:11:04.347 に答える
1

Unix タイムスタンプで返されない日付で問題が発生する可能性があるため、これは私にとってはうまくいきます...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
于 2010-04-23T01:56:04.733 に答える
0

PHPバージョン4.4.9とMySQL5.0を使用すると、これは私にとってはうまくいきました。

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDateMySQLの列です。

于 2009-11-21T19:12:50.040 に答える
0

私が提案するアプローチは、次のように機能します。まず、mysql 形式の文字列から基本的な datetime オブジェクトを作成します。そして、好きなようにフォーマットします。幸いなことに、mysql の datetime は ISO8601 に準拠しているため、コード自体は非常にシンプルでエレガントに見えます。ただし、そのdatetime列にはタイムゾーン情報がないため、適切に変換する必要があることに注意してください。

コードは次のとおりです。

(new ISO8601Formatted(
    new FromISO8601('2038-01-19 11:14:07'),
    'm/d/Y h:iA'
))
    ->value();

それは出力します01/19/2038 11:14AM-うまくいけばあなたが期待するものです。

この例では、メレンゲ ライブラリを使用します。気が向いたら、さらにいくつかチェックすることができます。

于 2020-05-16T18:18:09.863 に答える
-1
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
于 2013-12-02T13:00:47.527 に答える