2016-07-19 3 views
0

私はPHPを使って与えられた時間に60または90分を追加しようとしています。PHPで時間を分けて追加する

私はこれを2つの方法で試みましたが、どちらも予期しない結果で終了しました。

入力データ:

$data['massage_hour_from'] = '09:00:00'; 
$data['massage_duration'] = 60; 

まず試してみてください。

$data['massage_hour_to'] = date('H:i:s', strtotime('+' . $data['massage_duration'] . ' minutes', strtotime($data['massage_hour_from']))); 

2回目の試行:

$datetime = new DateTime($data['massage_date']); 
$datetime->setTime($data['massage_hour_from']); 
$datetime->modify('+' . $data['massage_duration'] .' minutes'); 
$data['massage_hour_to'] = $datetime->format('g:i:s'); 

は私が間違って何をしているのですか?

+0

私がお勧めするチャンスを逃すことはありません[カーボン](http://carbon.nesbot.com/#gettingstarted)。それで、Unixタイムスタンプで現在の時刻を取得し、それに3600秒を追加することができます。 – Andrew

+2

'$ datetime-> setTime($ data ['massage_hour_from']);' .... 'setTime()'は時間、分、秒の3つの引数をとります。単一の書式設定された文字列ではありません –

+0

[PHPで日時を追加する]の重複の可能性あり(http://stackoverflow.com/questions/8169139/adding-minutes-to-date-time-in-php) – Terminus

答えて

2

DateIntervalクラスのコンストラクタの引数についての詳細を読むことができます短い名前の名前ですが、このコードの動作は次のとおりです。

$from = '09:00:00'; //starting string 
$duration = 90; //in minutes 
$date = new DateTime($from); 
$date->add(new DateInterval("PT{$duration}M"));//add minutes 
$to = $date->format('H:i:s'); // '10:30:00' 

Live demo

+0

私はそれをローカルで試してみると、この致命的なエラーが表示されます:致命的なエラー: 'DateInterval :: __ construct():不明または不正な形式(PT60?> M)'というメッセージでキャッチされない例外 '例外' ' – Cosmin

+0

あなたの実装で。 'DateInterval'に入る文字列をどのように構築しているかに注目してください。それはちょうど 'PT60M'であるべきですが、あなたは 'PT60? > M 'である。文字列を別々に作成し、それを正しく取得するまでスクリーンに 'echo'するのは良い考えです。次に 'DateInterval'の中に入れます。 – BeetleJuice

+0

はい、余分な '?>'がフォームから来ているようです。それは今働く。 – Cosmin

0

これを試してみて、

$data['massage_hour_to'] = strtotime("+90 minutes", strtotime($data['massage_hour_from'])); 
0

あなたが使用することもできDateTimeadd方法:

$data['massage_hour_from'] = '09:00:00'; 
$data['massage_duration'] = new DateInterval('PT60M'); 

$massageStart = new DateTime($data['massage_hour_from']); 
$massageStart->add($data['massage_duration']); 
echo 'Massage ends at: ' . $massageStart->format('H:i:s'); 

はあなたが私はあなたの変数を置き換えhere

関連する問題