【问题标题】:Sum time from datetime从日期时间求和时间
【发布时间】:2015-04-17 09:46:19
【问题描述】:

我在 sql 中有一个表,类型是 datetime y m d h i s 我在 php 中使用 mid 来获取单独的时间和单独的日期,就像这样 mid(tablename,1,10) 只能像这样获取日期'y m d' 并使用 mid(tablename,12,8) 只能像这样获得时间'H:i:s' 这是代码解释我做了什么

<html> 
<head> 
<title>ss</title> 
</head> 
<body> 
    <form method='post' action='<?php $_SERVER['SELF'];?>'> 
        <input type='submit' name='submit' /> 
    </form> 
    <? 
        include("config"); 
        $submit = $_POST['submit']; 
        $getdata1= mysql_query("select checktime from calls"); 
        if(isset($submit)) 
        { 
            while($getdata= mysql_fetch_array($getdata1)) 
            { 
                echo "<input type='text' name='text' value='mid($getdata[1],12,8)'";
        } 
    }  
?> 
</body> 
</html>

现在我得到这样的结果

08:00:00
08:10:00
07:00:51

等等 我需要将结果总结为

date("d H:i:s",strtotime(all result from fetch array))

所以我尝试了这个


<html> 
<head> 
<title>ss</title> 
</head> 
<body> 
    <form method='post' action='<?php $_SERVER['SELF'];?>'> 
        <input type='submit' name='submit' /> 
    </form> 
    <? 
        include("config"); 
        $submit = $_POST['submit']; 
        $getdata1= mysql_query("select checktime from calls"); 
        if(isset($submit)) 
        {  
            while($getdata= mysql_fetch_array($getdata1)) 
            { 
                echo "<input type='text' name='text' value='mid($getdata[1],12,8)'";
                for($i=0;$i<5;$i++)
                {
                    $i+= strtotime($getdata[0]);
                }
            } 
        echo $i;
    } 
?> 
</body> 
</html>

但我只有最后一个结果

所以我尝试在这样的 sql 查询中这样做

<html> 
<head> 
<title>ss</title> 
</head> 
<body> 
    <form method='post' action='<?php $_SERVER['SELF'];?>'> 
        <input type='submit' name='submit' /> 
    </form> 
    <? 
    include("config"); 
    $submit = $_POST['submit']; 
    $getdata1= mysql_query("select unix_timestamp(mid(checktime,12,8)) from calls"); 
    if(isset($submit)) 
    { 
        while($getdata= mysql_fetch_array($getdata1)) 
        { 
            echo "<input type='text' name='text' value='mid($getdata[1],12,8)'";
            for($i=0;$i<5;$i++)
            {
                $i+= $getdata[0];
            }
        } 
        echo $i;
    } 
?> 
</body> 
</html>

我得到的结果不是来自1970-1-1,而是来自mid(checktime,1,10),所以我想要总结的结果是这样的: H:i:s 从整个提取。

我的意思是,我怎样才能得出这样的结果: 08:00:00 08:10:00 07:00:51 在一个变量中?

【问题讨论】:

  • 我不明白。要添加日期值,您可以将日期解析为strtotime(),然后将结果相加并使用date() 转换回日期。你也可以使用date_add()link

标签: php arrays


【解决方案1】:

如果我对你的问题理解得很好,这里有一个小例子,你可以根据需要总结和格式化时间。

$times = ['15:00:00', '08:10:00', '07:00:51'];

$date = new \DateTime;
$alteredDate = new \DateTime;

foreach ($times as $time) {
    $parts = explode(':', $time);
    $alteredDate->add(new \DateInterval(sprintf('PT%dH%dM%dS', $parts[0], $parts[1], $parts[2])));
}

echo $alteredDate->diff($date)->format('%a %h:%i:%s');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多