2012-06-11 16 views
11

日付オブジェクトとして今日の日付をどのように取得しますか?PHPの日付オブジェクトとして現在の日付/時刻を取得する方法

開始日と今日の差を計算しようとしています。

$today = getdate();   
$start = date_create('06/20/2012'); 
$diff = date_diff($start, $today); 

echo($today . '<br/>' . $start . '<br/>' . $diff); 

出力:

Array ([seconds] => 8 [minutes] => 1 [hours] => 16 [mday] => 11 [wday] => 1 [mon] => 6 [year] => 2012 [yday] => 162 [weekday] => Monday [month] => June [0] => 1339455668)

DateTime Object ([date] => 2012-06-20 00:00:00 [timezone_type] => 3 [timezone] => America/Los_Angeles)

答えて

33
new DateTime('now'); 

http://www.php.net/manual/en/datetime.construct.php

の比較が簡単です。

$today = new DateTime('now'); 
$newYear = new DateTime('2012-01-01'); 

if ($today > $newYear) { 

} 
getdate()が配列ではなく、日付オブジェクトを返すので、以下では、動作しません。

Opの編集 date_default_timezone_setと呼ぶ必要がありましたが、このコードは私に役立ちました。

+3

明示的な '$ today = new DateTime(" now ");は、引数がデフォルトで" now "になっていても、より明白だと思います。 – jedwards

+0

コード* $ today = new DateTime( 'now'); *は実際に何らかのエラーを投げています。 (500内部サーバーエラー) – McGarnagle

+1

@dbasemanより具体的になることができますか?実行中のPHPのバージョンは? http://codepad.org/5lYyo8MC –

0

date_createコンストラクタ(パラメータなし)を使用して現在の日付を取得しました。

$diff = date_diff(date_create('06/20/2012'), date_create()); 
print_r($diff); 

出力:

DateInterval Object ([y] => 0 [m] => 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [invert] => 1 [days] => 8)

私はPHP5/IISで私のためにエラーを投げた理由が、マイクBの答え(と私は日時のためにしようとした任意のコンストラクタ)見当がつかない。日中の違いを取得するために

+1

解決が見つかったらうれしいです。 'DateTime'がなぜインスタンス化に失敗したのか不思議であれば、エラー報告を出すことができます。 500エラーは、PHPがバーフであることを伝えるIISの方法ですが、はるかに具体的ではありません。これらの関数をスクリプトの先頭に置くことで、エラー報告をすることができます: 'error_reporting(-1); ini_set( 'display_errors'、1); ini_set( 'display_startup_errors'、1); '。 IISのエラーログには、特定のエラーメッセージも含まれている場合があります。 –

+0

@MikeBありがとうございます。これはエラーでした:*システムのタイムゾーン設定に依存することは安全ではありません。 date.default_timezone_set()関数を使用する必要があります。* date_default_timezone_set *を呼び出すと、あなたの答えが働きます。 – McGarnagle

10

は、この使用:

:eillこのオブジェクトに

$today = new DateTime('today'); 

時間を何時間分と差をつけたいと秒がこれを使用する場合は0時00分○○秒

こと

$now = new DateTime('now'); 
関連する問題