3

[json を使用して] 何度かサーバーに送信するアプリ [iphone] があるため、時間は hh:mm の 24 時間形式のようになり、時間は varchar としてデータベースに保存されます。

経過時間 = endTime - startTime を計算する必要があります

しかし、私の問題は、データベースにvarcharとして時間があり、タイムスタンプがないことです。

  • データベースのフィールドの varchar タイプを変更せずに、経過時間を計算する方法は?、この hh:mm を int に変換できますか? 操作のために? そして、hh:mm として再び表示し、おそらく他のテーブルに保存しますか?

どうもありがとう!

4

3 に答える 3

3

では、データベース内のフィールドの varchar タイプを変更せずに、経過時間を計算する方法は?

キャストすることはできますが、最初はそれを日時として使用する方がよいでしょう。

 cast(endtime as datetime) - cast(starttime as datetime) -- yields an interval
于 2011-06-08T00:34:41.510 に答える
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();

収量:

フォーマット: Ymd H:i:s; 2011-06-08 13:10:00

1307495400

于 2011-06-08T00:33:18.213 に答える
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
于 2011-06-08T00:36:28.857 に答える