【问题标题】:form value 00:00:00 into time value将值 00:00:00 转换为时间值
【发布时间】:2011-08-16 22:35:04
【问题描述】:

我想知道,如果我通过 javascript 函数记录时间并说我让它保持 2 分 20 秒:

00.02.20

现在当我将它插入到我的数据库中时,字段类型设置为时间,它没有正确记录。

我认为这来自我如何请求数据:

$length = mysql_escape_string($_REQUEST['timeDrive']);

有没有办法将其转换为要输出确切值的时间:

00.02.20

感谢您的帮助!

【问题讨论】:

    标签: php sql time


    【解决方案1】:

    如果您不需要对这些字段执行任何数学函数(例如:求和、平均值等),并且它只是为了显示,那么您可以将其作为纯文本存储在 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
    );
    

    【讨论】:

    • 我有点支持你,但我真的需要将它插入到数据库中(00:02:20),因为我正在对现有时间值执行一些 sum() 函数.
    【解决方案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"
    

    【讨论】:

    • 见鬼,你是对的......好吧,我会改变它,谢谢你的提示......我是新手两年了:P
    • 好的,所以我对我请求的时间字符串发生了什么感到有点困惑......它是否更改为不同的数字然后插入?如果是这样,我如何在网站上将它表示为它在 (00:02:20) 中记录的形式
    • 你请求的不是时间字符串,而是一个带秒数的整数。在您记录它的网站上,只需计算秒数,而不是生成这样的格式。如果你真的要求你的时间作为一个字符串,那么你应该把它作为一个字符串保存在你的数据库中,这只是最简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2014-02-19
    • 2017-03-13
    • 1970-01-01
    • 2020-01-09
    • 2010-11-24
    相关资源
    最近更新 更多