我在想,如果我通過javascript函數記錄的時間,說我離開它2分鐘20秒:形式值00:00:00到時間價值
00.02.20
現在,當我插入此到我的數據庫,其中字段類型設置爲時間,它不正確記錄。
我認爲它來自我如何請求數據:
$length = mysql_escape_string($_REQUEST['timeDrive']);
有轉換到這一點是要輸出的精確值的時間的一種方式:
00.02.20
感謝幫助!
我在想,如果我通過javascript函數記錄的時間,說我離開它2分鐘20秒:形式值00:00:00到時間價值
00.02.20
現在,當我插入此到我的數據庫,其中字段類型設置爲時間,它不正確記錄。
我認爲它來自我如何請求數據:
$length = mysql_escape_string($_REQUEST['timeDrive']);
有轉換到這一點是要輸出的精確值的時間的一種方式:
00.02.20
感謝幫助!
如果你不需要在這些字段上執行任何數學函數(例如:總和,平均等),並且純粹用於顯示,那麼您可以將它作爲純文本存儲在CHAR(8)
字段中。
否則,您需要將其歸一化爲某種單位。我建議也許是秒數的整數(如果這對你來說足夠準確)。
要轉換到秒:
$val = "00.02.20";
$parts = explode(".", $val); // ['00', '02', '20']
$totalSeconds = parts[0] * 3600 + parts[1] * 60 + parts[2]; // 140
而且將其轉換回:
$seconds = 140; // this would be read from the database, or something
printf("%02d.%02d.%02d",
$seconds/3600,
($seconds/60) % 60,
$seconds % 60
);
不,不僅僅是這樣。
這將是可能的,如果你讓它更簡單,你只需要計算javascript中的秒數。在您的數據庫中,您可以將其保存爲整數或其他內容。
另一種方法是將它保存爲字符串,但不能比較時間。
好吧,我把它保存爲一個整數,如果你想顯示的時間給別人,你會之前格式化,像這樣:
function formatTime($seconds) {
$hours = floor($seconds/3600); //by nickf
$minutes = floor($seconds/60) % 60;
$sec = $seconds % 60;
$retHr = (strlen($hours) == 1 ? "0" . $hours : $minutes);
$retMin = (strlen($minutes) == 1 ? "0" . $minutes : $minutes);
$retsec = (strlen($sec) == 1 ? "0" . $sec : $sec);
return $retHr . "." . $retMin . "." . $retsec;
}
//now you counted one hour, two minutes and three seconds, you call it like
echo formatTime(3723);
//... and it outputs "01.02.03"
地獄,你說的沒錯....嗯,我會只是改變它,感謝提示。 ..我現在是一個新手兩年:P –
好吧,所以我只是有點困惑,以什麼發生在我請求的時間字符串...它被改變爲不同的數字,然後插入?如果是這樣,我如何將它作爲它在(00:02:20) –
中記錄的格式表示回網站上。您不請求時間字符串,而是請求秒數的整數。在記錄它的網站上,只需計算生成這種格式的秒數即可。 如果你確實要求你的時間是一個字符串,那麼你應該把它作爲一個字符串保存在你的數據庫中,這只是最簡單的方法。 –
我很喜歡你,但我真的需要將它插入到數據庫中,因爲它正在寫入(00:02:20),因爲我正在對現有時間值執行一些sum()函數。 –