MySQLにはdatetime
カラムがあります。
PHPを使用して mm/dd/yy H:M(AM/PM) のように表示に変換するにはどうすればよいですか?
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日付フォーマットオプション を参照してください。
日付を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の有用性のためにここにある」)
あなたがPHP 5を使っているならば、あなたも試すことができます
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));
最後にPHP 5.3以降の正しい解決策:
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');
もっと簡単な方法は、PHPではなくMySQLクエリで直接日付をフォーマットすることです。 DATE_FORMATのMySQLマニュアルエントリ を参照してください。
あなたがPHPでそれをしたいのであれば、あなたは date 関数が必要ですが、あなたは最初にあなたのデータベース値をタイムスタンプに変換しなければなりません。
全部忘れなさい。ただ使用してください:
$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
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 にあります。
これはSQLクエリのフィールドをフォーマットする必要があります。
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
date 関数を使用してください。
<?php
echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
MySQLの日時設定によって異なります。通常: 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));
}
SELECT
DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo
PHPコード内のすべての関数を変更したくない場合は、予想される日付形式を表示するには、ソース(データベース)で変更します。
上記の例のように、 as 演算子を使用して行に名前を付けることが重要です(dateFromとして、as dateUntilとして)。あなたがそこに書いた名前は名前であり、行はあなたの結果の中で呼ばれるでしょう。
この例の出力は次のようになります。
[日にち、数値(0..31)]。[月名(1月、12月)]。[年、数値、4桁]
例:5.August.2015
選択した区切り記号を使用してドットを変更し、その他の日付形式については DATE_FORMAT(date、format) 関数を確認してください。
また、クエリに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つの異なるクエリを使用するのは面倒です。
あなたは、Unixタイムスタンプに返されない日付に関する問題を抱えることができるので、これは私のために働きます...
return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
これは動作します...
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
PHPバージョン4.4.9およびMySQL 5.0を使用して、これは私のために働きました:
$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate
PubDate
は MySQL の列です。