【问题标题】:php mysql time elapsed calculationphp mysql 时间计算
【发布时间】:2011-09-10 12:13:55
【问题描述】:

我有一个应用程序 [iphone],它有时会发送到服务器 [使用 json],所以时间看起来像 hh:mm 24 小时格式, 时间作为varchar保存在数据库中,

我需要计算经过的时间 = endTime - startTime

但我的问题是我在 db 中有时间作为 varchar!,没有时间戳,

  • 那么如何计算经过的时间,而不改变我数据库中字段的 varchar 类型? 我可以将此 hh:mm 转换为 int 吗?操作?,然后再次显示为 hh:mm,可能要保存在其他表中?

非常感谢!

【问题讨论】:

    标签: php mysql database elapsedtime


    【解决方案1】:

    那么如何计算经过的时间,而不改变我数据库中字段的 varchar 类型?

    您可以投射它,但最好将它作为日期时间开始。

     cast(endtime as datetime) - cast(starttime as datetime) -- yields an interval
    

    【讨论】:

      【解决方案2】:

      简单:

      $start_time = '11:10';
      $end_time = '18:55';
      
      $start_time = explode(':', $start_time);
      $end_time = explode(':', $end_time);
      
      $elapsed_time = $end_time[0]*60+$end_time[1]-$start_time[0]*60-$start_time[1];
      // in minutes.
      $elapsed_hours = floor($elapsed_time/60);
      $elapsed_minutes = $elapsed_time-$elapsed_hours*60;
      
      print $elapsed_hours.':'.$elapsed_minutes;
      // 7:45
      

      【讨论】:

        【解决方案3】:

        在 PHP 中:

        $json_time = '13:10';
        $json_format = 'H:i';
        
        $date = DateTime::createFromFormat($json_format, $json_time);
        
        $mysql_format = 'Y-m-d H:i:s';
        echo "Format: $mysql_format; " . $date->format($mysql_format) . "\n";
        
        echo $date->getTimestamp();
        

        产量:

        格式:Y-m-d H:i:s; 2011-06-08 13:10:00

        1307495400

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-18
          • 2011-05-22
          • 1970-01-01
          • 2022-01-23
          • 2013-10-14
          • 2011-09-24
          • 2021-12-05
          相关资源
          最近更新 更多