php mysql时间已过去计算

时间:2011-06-08 00:24:28

标签: php mysql database elapsedtime

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

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

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

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

非常感谢!

3 个答案:

答案 0 :(得分:3)

  

那么如何计算经过的时间,而不更改我的db中的varchar字段类型?

你可以施展它,但你最好把它作为开始的日期时间。

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

答案 1 :(得分:2)

在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();

Yeilds:

  

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

     

1307495400

答案 2 :(得分: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