我很想知道,如果我通过javascript函数记录时间并说我让它保持2分20秒:
00.02.20
现在,当我将其插入到我的数据库中时,字段类型设置为时间,它没有正确记录。
我认为它来自我如何请求数据:
$length = mysql_escape_string($_REQUEST['timeDrive']);
有没有办法将其转换为输出确切值的时间:
00.02.20
感谢您的帮助!
答案 0 :(得分:2)
不,不只是这样。
如果你让它变得更简单,你就可以计算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"
答案 1 :(得分:2)
如果您不需要对这些字段执行任何数学函数(例如:求和,平均等),并且它纯粹用于显示,那么您只需将其作为纯文本存储在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
);