2011-04-14 40 views
0

私には、日付と時刻を入力するフォームがあります。 (例:23:30 - 04/14/2011)日付計算

私は2回目のエントリーを持っています。 (例:00:15 - 翌日)

どのようにして2番目の入力時刻の日付を計算できますか? これらの3つの変数にのみ。

時間A _に2011年4月14日 時間B = 0時15分に= 23:30 ___

誰でも私にこの計算のセマンティクスをどのように表示することができますか?

ありがとうございました

+2

正確には?違いは? –

+1

私も好奇心が強い、あなたが何をしたいか、第3の変数は何なのか、何を計算する必要があるのか​​不明ですか? –

+0

もっと詳しく説明してください... – Fero

答えて

0

私はこれを行う方法のいくつかを見ることができます。私はおそらくこのような何かをするだろう:HTMLで

(フォームコントロール、ラベルなど行方不明):あなたのPHPのフォームハンドラで次に

<input name="date_from" type="text"> <!-- use some sort of javascript date popup control to format this properly--> 
<input type="text" name="hours_to"> <!-- remember to add validation to input --> 
<input type="text" name="mins_to"> <!-- remember to add validation to input --> 
<select name="day_to"> 
<option value="0">The same day</option> 
<option value="1">The next day</option> 
<option value="2">The day after that</option> 
</select> 

を、DATE_FROMが有効な日付形式であると仮定すると:

$time_from = strtotime($_POST['date_from']); 
$time_to = str_to_time('Y-m-d 00:00:00', $time_from) //start of the day 
    + 86400 * (int) $_POST['day_to'] //86400 seconds in a day 
    + 3600 * (int) $_POST['hour_to'] //3600 seconds in an hour 
    + 60 * (int) $_POST['min_to'];  //60 seconds in a minute 

$sql_from = date("Y-m-d H:i:s", $time_from); 
$sql_to = date("Y-m-d H:i:s", $time_to); 

その後、DB挿入を行うことができます。もちろん、検証などが必要です。また

、のstrtotime()は、相対時間パラメータを受け入れることができます(たとえば、「+ 1日」)これを行う別の方法かもしれない、詳細はPHPマニュアルを確認してくださいあなたは計算する必要が何

0
var date1 = '23:30 - 04/14/2011'; 
    var date2 = '00:15 - the Next Day'; 
    var d1month = date1.split(' - ')[1].split('/')[0]; 
    var d1day = date1.split(' - ')[1].split('/')[1]; 
    var d1year = date1.split(' - ')[1].split('/')[2]; 
    var d1hour = date1.split(' - ')[0].split(':')[0]; 
    var d1min = date1.split(' - ')[0].split(':')[1]; 

    var d2hour = date2.split(' - ')[0].split(':')[0]; 
    var d2min = date2.split(' - ')[0].split(':')[1]; 

    var d = new Date(d1year, parseInt(d1month)-1, d1day, d1hour, d1min, 0, 0); 
    var d2 = new Date(d1year, parseInt(d1month)-1, parseInt(d1day)+1, d2hour, d2min, 0, 0);