php - Unix 时差(以分钟为单位)给出了意想不到的结果
问题描述
我有以下简单的测试代码:
$start_time_unix = time();
$end_time_unix = time();
$seconds_diff = $end_time_unix - $start_time_unix;
$duration = round(abs($seconds_diff/1000) / 60,2);
当我将它存储在 MySQL (int) 中时,即使几秒钟,结果也是像 25634 这样的大值。我怎样才能得到分钟,即使在几分钟内?我上面的代码有什么问题?
解决方案
首先int
不能存储分数,所以你可能想要使用float
ordouble
代替。
但是你为什么要除以1000
. $seconds_diff
由seconds组成,因此除以60
将给您一分钟的分数。
例如:如果$seconds_diff
是13
[seconds] 的值:
$duration_in_minutes = round($seconds_diff / 60, 2);
$duration_in_milliseconds = $seconds_diff * 1000;
如果您的目标是使用毫秒microtime()
,请使用time()
:
http: //php.net/manual/de/function.microtime.php
建议
只需测量时间microtime()
并将结果直接存储在数据库中,无需四舍五入、除法或格式化。然后稍后,在必须输出时进行格式化。这将为您提供更精确的结果和更大的自由度。
$start_time = microtime();
…
$end_time = microtime();
$duration = $end_time - $start_time; // duration in milliseconds --> save to database
输出时,例如:
$duration = get_duration_from_database(); // pseudo function
printf('%.2f minutes', $duration / 1000 / 60);
推荐阅读
- square-connect - RetrievePayment 响应中如何表示 Square 处理费用?
- c# - 绑定带有标签代码的列表元素
- r - 是否有用于查找平均变化指数 (x[n]/x[1])^(1/(n-1)) 的 R 函数?
- mysql - 单击 DataGridView 时如何在 DateTimePicker 中显示日期?
- file - 通过 Tidtrivialftp 发送 JPG 时出现问题。收到的文件为 0KB
- javascript - 单击按钮后引导模式不起作用
- jquery - 动态元素未附加到 on() 函数?
- javascript - 在 redux 状态的对象中添加或删除对象
- jenkins - 如何将构建工件的快照版本上传到 Artifactory 中的 gradle 存储库
- bash - 如何通过aws UserData在bash中确认lets-encrypt --dry-run测试