2010-12-01 5 views
50

タイムスタンプからDateTimeを作成するには、< 5.3より小さいバージョンでDateTimeを作成しますか? 5.3ではPHPのタイムスタンプからDateTimeを作成する<5.3

それは次のようになります。

$date = DateTime::createFromFormat('U', $timeStamp); 

のDateTimeコンストラクタは、文字列を望んでいるが、これは私のため

$date = new DateTime("@$timeStamp"); 
+1

マニュアルによれば、それが動作するはずです。 '$ date = new DateTime( '@'。$ timeStamp);'を試したことがありますか?そして、「うまくいきません」とはどういう意味ですか? – Jonah

+1

*私のために*動作しませんでした。エラー?日付/時刻が間違っていますか? –

+0

致命的なエラー:メッセージ 'DateTime :: __ construct()[datetime.--construct]でキャッチされない例外「例外」:位置0(@)で時間文字列(@)を解析できませんでした:予期しない文字' – Yarin

答えて

3

以下の作品に動作しませんでした:

$dateString = date('Ymd', $timeStamp); 
$date = new DateTime($dateString); 
+0

これは動作しません:(それを修正する方法 – user3501407

+0

タイムスタンプ[1]は単なるYmdではなく、1970年1月1日以降の秒数(場合によってはマイクロ秒)です。 [1] = https:// en。 wikipedia.org/wiki/Unix_time –

+0

'$ dateString = date( 'U'、$ timeStamp);'? – Pete

31

を以前の答えのように日付だけでなく日付と時刻が必要であると仮定します。

$dtStr = date("c", $timeStamp); 
$date = new DateTime($dtStr); 

しかし、それを行う必要があるのはかなり愚かです。

+0

このソリューションは機能しますが、不必要に日付文字列の書式設定に時間を費やした後、再解析します。 – Jonah

11

$ timeStamp変数が空であるため、動作しません。 DateTimeを作成する前に$ timeStampの値をエコーし​​てみてください。実行した場合:

new DateTime('@2345234'); 

エラーは発生しません。ただし、次のコマンドを実行した場合:

new DateTime('@'); 

正確なエラーが表示されます。いくつかのデバッグを行い、$ timeStampが空である理由を調べる必要があります。

+0

警告$ dateTime-> modify( '@'。1234)を使用していても、コンストラクタで '@ 'を使用すると環境の現在のタイムゾーンと第2引数で指定されているタイムゾーンを無視することになります。setTimezone(date_default_timezone_get() ) 'をUTCのタイムゾーンから環境のタイムゾーンに変更する – fyrye

+0

空のタイムスタンプで '@'を使用したときに同じ問題が発生しました。この回答に感謝します。役に立つよりも、「@」が問題だったことを暗示しています。 – thomasrutter

38

PHP 5> = 5.2.0

$date = new DateTime(); 
$date->setTimestamp($timeStamp); 
+5

これはPHP 5> = 5.3と考えてください – Spencer

+1

不正確 http://php.net/manual/en/datetime.settimestamp.php – DIMMSum

+0

この回答はincorectであり、setTimestamp()はPHP 5.3 – Arkemlar

関連する問題