さて、後で別の形式に簡単に変更できる日付を設定する方法はありますか。例: 日付は mysql データベースにあり、ユニバーサル形式です。ドキュメントに入れられますが、日付形式をその場で変更する方法はありますか?
3 に答える
タイムスタンプを使用しますか? http://php.net/manual/en/function.time.php
はい、これはUNIX タイムスタンプと呼ばれ、エポック (1969 年 12 月 31 日) からの秒数を表します。
タイムスタンプでは、date() 関数を使用して、任意の形式で日付を出力できます。
簡単な答え:そうではありません。
長い答え:
さまざまな文字列形式で日付を表現するためのさまざまな標準 ( RFC850、RFC822、ISO8601など) が多数あります。UNIX タイムスタンプもあります。PHP であらゆる種類の日付変換を行うには、通常、UNIX タイムスタンプを使用する必要があります。PHP は、事実上すべての標準化された日付のテキスト表現を UNIX タイムスタンプに変換できますstrtotime
。
PHP アプリの日付は、次の 2 つの状態のいずれかになります。
- 多かれ少なかれ読みやすく、異なる環境 (データベース/PHP、XML/PHP など) 間で簡単に交換できますが、操作 (加算/減算/比較) できない文字列表現
- UNIX タイムスタンプまたは
DateTime
オブジェクト(PHP >= 5.2 を使用していて、それを使用することを選択した場合) 操作は可能ですが、人間にとっては価値がありません
通常、入力、操作、および出力中に日付をある状態から別の状態に変換します。
日付をあるテキスト形式から別の形式に変換するには、通常は で読み込みstrtotime
、結果のタイムスタンプを必要な形式に再フォーマットします。
date(DATE_RFC822, strtotime('2010-01-12 03:52:12'));
date('l jS \of F Y h:i:s A', strtotime('2010-01-12 03:52:12'));
$timestampA = strtotime('2010-01-12 03:52:12');
$timestampB = strtotime('2011-02-05 02:00:31');
if ($timestampA < $timestampB) {
...
}
UNIX タイムスタンプは普遍的な形式であると言えますが、実際には普遍的な日付形式などはありません。UNIX タイムスタンプをデータベースに格納するのではなく、MySQL のネイティブDATETIME
(またはDATE
またはTIME
) フィールドを使用する必要があります。これらのDATETIME
フィールドをデータベースから取得すると、MySQL の優先テキスト表現Y-m-d H:i:s
形式で取得されます。上記のように、これを必要な「人間が読める」形式に変換します。