タイムスタンプフィールドを持つmySQLデータベースがあります。私がテストしている間、それは現在1つのエントリしかありません、それはです
2010-02-20 13:14:09
私はデータベースからプルして使用しています
echo date("m-d-Y",$r['newsDate'])
私の最終結果は
12-31-69
誰もが理由を知っていますか?
編集:editedit:その編集は無視してください... notepad ++のFTPアドオンがタイムアウトになり、残念ながら同期できないときにエラーが表示されません。
date
関数は、2番目のパラメーターとして NIXタイムスタンプ を想定しています-つまり、DBから取得した日付をUNIXタイムスタンプに変換する必要があります。 strtotime
を使用して実行できます。
$db = '2010-02-20 13:14:09';
$timestamp = strtotime($db);
echo date("m-d-Y", $timestamp);
そして、あなたは得るでしょう:
02-20-2010
あなたは'2010-02-20 13:14:09'
文字列からdate
関数へ;その文字列は有効なUNIXタイムスタンプではありません。
'12-31-69
' おそらく 1970-01-01
、あなたのロケールで;および1970-01-01
はエポック-0 UNIXタイムスタンプに対応する日付です。
手始めに、php date()
関数は2番目の変数として秒を期待しています。そのため、日付が正しく表示されない理由が説明されます。この問題について source を確認してください。
これで問題の答えが得られ、PHPを取得してSQLタイムスタンプから日付を正しくフォーマットするには、クエリを少し変更するだけです...
SELECT author, `when`
に変更...
SELECT author, UNIX_TIMESTAMP(`when`)
次に、PHP日付関数を使用し、上記のSQLクエリの結果を格納する変数を指定します。
代わりにMySQLの date_format() 関数を使用できます。
SELECT date_format(timestampfield, '%m-%d-%Y') FROM table etc....
これにより、タイムスタンプをUNIX時間に往復し、PHPで通常の日付文字列に戻す必要がなくなります。 2つではなく1つの日時フォーマット呼び出し。
これは初心者に役立つと思います:
mYSQL形式から日付から1時間の基本的な減算の例:
$to='2013-25-10 22:56:00'; //curr time
$timestamp = strtotime($to); //convert to Unix timestamp
$timestamp = $timestamp-3600; //subtract 1 hour (3600 this is 1 hour in seconds)
echo date("Y-m-d H:i:s",$timestamp); //show new date
わかりました、私は1週間これと格闘していました(もっと長くなりましたが、それから一休みしました)。
テーブルに2つの特定のフィールドがあります
creationDate>タイムスタンプ> current_timestamp editDate>タイムスタンプ> current_timestamp
彼らは1969年12月31日、またはまったく何も引き出していません...迷惑...非常に迷惑
mysqlのクエリで私はしました:
unix_timestamp(creationDate) AS creationDate
unix_timestamp(editDate) AS editDate
pHP変換で私はしました:
$timestamp = $result_ar['creationDate'];
$creationDate = date("Y-M-d (g:i:s a)", $timestamp)
echo($creationDate);
$editstamp = $result_ar['editDate'];
$editDate = date("Y-M-d (g:i:s a)", $editstamp)
echo($editDate);
これは私が戻るための私の問題を解決しました
2010-Jun-28 (5:33:39 pm)
2010-Jun-28 (12:09:46 pm)
それぞれ。
これが誰かを助けることを願っています。
編集:チェック後、MySQLはPHPにtimestamp
を文字列として返すようです。そのため、この答えは偽でした:)
とにかく、1969年に日付を取得する理由は、UNIXのゼロ時間をUTCから現地時間に変換しているためです。 UNIX時間は1970年からの秒数です。したがって、値0は1970を意味します。プロベイビーは、GMT-6のような負のオフセットを持つタイムゾーンに住んでおり、最終的に31-12-69になります。