PHP を使用して MySQL 日時を別の形式に変換する
質問
私は持っています datetime
MySQL の列。
どうすれば次のように表示に変換できますか mm/dd/yy H:M (AM/PM) PHPを使用していますか?
解決 2
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( 'Ymd 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、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の使用&amp; MySQL 5.0、これは私のために働いた:
$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate
PubDate
は、 MySQL の列です。
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', <*>POST['date'])))."'";