如何将 h:m:s 转换为浮点数和将浮点数转换为 h:m:s php
How to convert h:m:s to float and float to h:m:s php
我想将秒的时间值转换为浮点数,然后对其进行一些计算,然后使用 php
再次将其转换为时间值
我使用了下面描述的函数,但它只有小时和分钟计算,如果有第二个值,它会显示错误的数量。
我从 time conversion to float
找到了这个函数
我使用函数将时间转换为浮点数是
function hours_tofloat($val){
if (empty($val)) {
return 0;
}
$parts = explode(':', $val);
return $parts[0] + floor(($parts[1]/60)*100) / 100;
}
hours_tofloat("00:02:37");
如果我将上面的函数用于 00:02:37
时间值,它会给我错误的 float no 0.03
因为上面的函数没有第二个选项。所以帮助我并指导如何计算它
修改你的代码如下。它将 return 时间 seconds
.
$val = '00:02:37';
function hours_tofloat($val){
if (empty($val)) {
return 0;
}
$parts = explode(':', $val);
return (int) (($parts[0] * 60 *60) + $parts[1]*60 + $parts[2]);
}
echo hours_tofloat($val);
输出:00:02:37 = 157
它returns
157
$val = "00:02:37";
/* function converts time value to float */
function time_to_float($val){
$parts = explode(':', $val);
$hour_val = 0;
$hour_val = $parts[0];
$min_val = $parts[1];
$second_val = $parts[2];
return ($hour_val +(($min_val* 1/60))+($second_val * 1/3600));
}
$value = time_to_float($val);// 0.043611111111111
/* function to convert float to time */
$res = float_to_time($value);//00:02:37
function float_to_time($value){
$value1 = explode('.',$value);
$hours = $value1[0];
$min_in_float = ($value - $hours) * 60/1;
$min_val = explode('.',$min_in_float);
$min_val = $min_val[0];
$min_in_float = $min_in_float - $min_val;
$second_val = $min_in_float * 60/1;
$second_val = round($second_val);
if($hours < 10){
$hours = "0".$hours;
}
if($min_val < 10){
$min_val = "0".$min_val;
}
if($second_val < 10){
$second_val = "0".$second_val;
}
return $hours.":".$min_val.":".$second_val;
}
我从
那里得到了关于计算的参考
https://www.calculatorsoup.com/calculators/time/time-to-decimal-calculator.php
https://www.calculatorsoup.com/calculators/time/decimal-to-time-calculator.php
为什么不用EPOCH时间例程?纪元时间是一个整数,表示基于 1970 年 1 月 1 日的秒数。您不需要日期部分,因此您可以采用以下方法:
<?php
$time = '00:02:37';
$date = new DateTime("1970-01-01T$time+00:00");
echo 'Seconds = '.$date->format('U');
?>
输出
Seconds = 157
有了strtotime,我立即得到秒数。必须使用 UTC 作为时区。
$time = '00:02:37';
$seconds = strtotime('1970-01-01 '.$time.' UTC'); //157
gmdate可用于将整数转换为时间H:i:s.
$seconds = 157;
$timeHis = gmdate('H:i:s',strtotime('1970-01-01 UTC +'.$seconds.' Seconds'));
//'00:02:37'
小时数不得超过 23,秒数 $seconds 必须小于 86400(= 1 天)。也不支持负数。
我想将秒的时间值转换为浮点数,然后对其进行一些计算,然后使用 php
再次将其转换为时间值我使用了下面描述的函数,但它只有小时和分钟计算,如果有第二个值,它会显示错误的数量。
我从 time conversion to float
找到了这个函数我使用函数将时间转换为浮点数是
function hours_tofloat($val){
if (empty($val)) {
return 0;
}
$parts = explode(':', $val);
return $parts[0] + floor(($parts[1]/60)*100) / 100;
}
hours_tofloat("00:02:37");
如果我将上面的函数用于 00:02:37
时间值,它会给我错误的 float no 0.03
因为上面的函数没有第二个选项。所以帮助我并指导如何计算它
修改你的代码如下。它将 return 时间 seconds
.
$val = '00:02:37';
function hours_tofloat($val){
if (empty($val)) {
return 0;
}
$parts = explode(':', $val);
return (int) (($parts[0] * 60 *60) + $parts[1]*60 + $parts[2]);
}
echo hours_tofloat($val);
输出:00:02:37 = 157
它returns
157
$val = "00:02:37";
/* function converts time value to float */
function time_to_float($val){
$parts = explode(':', $val);
$hour_val = 0;
$hour_val = $parts[0];
$min_val = $parts[1];
$second_val = $parts[2];
return ($hour_val +(($min_val* 1/60))+($second_val * 1/3600));
}
$value = time_to_float($val);// 0.043611111111111
/* function to convert float to time */
$res = float_to_time($value);//00:02:37
function float_to_time($value){
$value1 = explode('.',$value);
$hours = $value1[0];
$min_in_float = ($value - $hours) * 60/1;
$min_val = explode('.',$min_in_float);
$min_val = $min_val[0];
$min_in_float = $min_in_float - $min_val;
$second_val = $min_in_float * 60/1;
$second_val = round($second_val);
if($hours < 10){
$hours = "0".$hours;
}
if($min_val < 10){
$min_val = "0".$min_val;
}
if($second_val < 10){
$second_val = "0".$second_val;
}
return $hours.":".$min_val.":".$second_val;
}
我从
那里得到了关于计算的参考https://www.calculatorsoup.com/calculators/time/time-to-decimal-calculator.php https://www.calculatorsoup.com/calculators/time/decimal-to-time-calculator.php
为什么不用EPOCH时间例程?纪元时间是一个整数,表示基于 1970 年 1 月 1 日的秒数。您不需要日期部分,因此您可以采用以下方法:
<?php
$time = '00:02:37';
$date = new DateTime("1970-01-01T$time+00:00");
echo 'Seconds = '.$date->format('U');
?>
输出
Seconds = 157
有了strtotime,我立即得到秒数。必须使用 UTC 作为时区。
$time = '00:02:37';
$seconds = strtotime('1970-01-01 '.$time.' UTC'); //157
gmdate可用于将整数转换为时间H:i:s.
$seconds = 157;
$timeHis = gmdate('H:i:s',strtotime('1970-01-01 UTC +'.$seconds.' Seconds'));
//'00:02:37'
小时数不得超过 23,秒数 $seconds 必须小于 86400(= 1 天)。也不支持负数。