2011-04-14 202 views
0

我有一個修復日期和時間輸入的表單。 (例如:23:30 - 04/14/2011)日期計算

我有第二次輸入。 (例如:00:15 - 第二天)

我如何計算第二次進入時間的日期。 只有這3個變量。

時間A = 23:30於2011年4月14日 時間B = 00:15的_ ___

任何人都可以看到這個計算的語義如何找到時間B的日期!

謝謝

+2

你有什麼需要計算究竟?差別? – 2011-04-14 14:36:58

+1

我也好奇,不知道你想做什麼,第三個變量是什麼,你需要計算什麼? – 2011-04-14 14:37:52

+0

請更好解釋... – Fero 2011-04-14 14:46:29

回答

0

我可以看到幾個這樣做的方法。我可能會做這樣的事情:

在HTML(丟失表單控件,標籤等):

<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> 

然後在你的PHP表單處理程序,假設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); 

然後,你可以做你的分貝插入,當然受到驗證等。

另外,的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);