2012-07-08 26 views
42

に時間の「x」の金額を追加します。やりたいどのようなIDは、私は現在、PHPはそうのような現在の時刻/日付を取得した日付

$now = date("Y-m-d H:m:s"); 

は+ $hours新しい変数$new_time等しい$nowを持っています。 $hoursは24~800の範囲の時間量である。

提案がありますか?

+0

のstrtotime()http://php.net/manual/en/function.strtotime.php –

+2

をそれがあなたが望むものならば。私はあなたが "H:m:s"の "m"は月の数字を表していることに気付かれたい。私はあなたが "H:i:s"と書いたかったと信じています。 – Paullo

答えて

75

strtotime()関数のようなものを使用して、現在のタイムスタンプに何かを追加することができます。 $new_time = date("Y-m-d H:i:s", strtotime('+5 hours'))

関数内に変数が必要な場合は、二重引用符を使用してstrtotime("+{$hours} hours")のようにする必要がありますが、strtotime(sprintf("+%d hours", $hours))を使用するとよいでしょう。

+0

をクロスチェックしてください。しかし、 '5'を変数に置き換えると、正しく動作しません。 'strtotime( '+ $ hours hours')' –

+0

私はあなたに役立つ答えを更新しました。 – fdomig

+0

$ new_time = date( "Y-m-d H:i:s"、strtotime( '+ 5時間')?mは月、iは分... – richard

16

あなたはこれを達成するためにstrtotime()を使用することができます。

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours 
+1

分でmを使用してこれらの回答とは何ですか? – richard

+0

@RichardDesLonde多分誰もがOPのコード例をコピーしたからです。 :-) – Zar

3

あなたはまた、計算にUNIX形式の時間を使うことができます。

$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs 
echo 'Now:  '. date('Y-m-d') ."\n"; 
echo 'Next Week: '. date('Y-m-d', $newtime) ."\n"; 
+0

悪い考え、うるう年の問題、うるう秒、夏時間など –

+0

@ダゴンいいえ、それは正しく計算されます。 – casraf

+0

閏年はこのメソッドを使用して世話され、夏時間は再び日付を使用しながら設定することができます – Ankit

4

うーん...あなたの分を補正する必要があります...」私は数分です。数ヶ月ではない。 :)(私も何かのために同じ問題を抱えていた::追加

$now = date("Y-m-d H:i:s"); 
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours 
22

他のソリューションは、(オブジェクト指向)は日時を使用することです

例:。。

$now = new DateTime(); //current date/time 
$now->add(new DateInterval("PT{$hours}H")); 
$new_time = $now->format('Y-m-d H:i:s'); 

PHP documentation

+3

ここで小さなtyop、$ date-> formatはおそらく$ now-> formatです – Patrick

0

通常の日時の値をmysql日時の形式に変換するには、次の関数を使用します。

private function ampmtosql($ampmdate) { 
      if($ampmdate == '') 
       return ''; 
      $ampm = substr(trim(($ampmdate)), -2); 
      $datetimesql = substr(trim(($ampmdate)), 0, -3); 
      if ($ampm == 'pm') { 
       $hours = substr(trim($datetimesql), -5, 2); 
       if($hours != '12') 
        $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql))); 
      } 
      elseif ($ampm == 'am') { 
       $hours = substr(trim($datetimesql), -5, 2); 
       if($hours == '12') 
        $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql))); 
      } 
      return $datetimesql; 
     } 

これが誰かを助ける

2015-06-04 09:55 AM -> 2015-06-04 09:55 
2015-06-04 03:55 PM -> 2015-06-04 15:55 
2015-06-04 12:30 AM -> 2015-06-04 00:55 

ホープ、などの日時の値に変換します。

2

あなたがOuzo goodies libにしてみてください、と流暢な方法でこれを行うことができます:

echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s"); 

APIのは、複数の操作を許可します。

6

正しい

あなたはこれを達成するためのstrtotime()を使用することができます。私は疑う

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours