在PHP中将浮点数数组转换为时间戳数组

时间:2019-03-27 05:42:19

标签: php

我绝对是PHP的新手,但是我确实了解一些基本的JS和Ruby。

我有一个类似下面的数组。

[7, 13.5, 15, 16.5, 24]

每个元素都是0到24之间的数字,它表示一天中的一个时间实例。 7表示07:00:00,13.5表示13:30:00,等等。

我在寻找帮助,将上面的数组转换为下面的数组,并将24更改为23:59:59。

[07:00:00, 13:30:00, 15:00:00, 16:30:00, 23:59:59]

原始数组中的项目将始终为整数或小数点后为5。

谢谢

4 个答案:

答案 0 :(得分:1)

单行解决方案,使用 gmdate 功能并使其简单。例如https://implode.io/brPerL

$ time = [7,13.5,15,16.5,24];

$out = [];

foreach($time as $item){
    if($item == 24){
        $out [] = '23:59:59';
    }else{
        $out [] = gmdate('H:i:s', floor($item * 3600));
    }

}

var_dump($out);


array(5) {
  [0]=>
  string(8) "07:00:00"
  [1]=>
  string(8) "13:30:00"
  [2]=>
  string(8) "15:00:00"
  [3]=>
  string(8) "16:30:00"
  [4]=>
  string(8) "23:59:59"
}

答案 1 :(得分:1)

代码使用sprintf函数来格式化时间。

<?php
$timeArr = [7, 13.5, 15, 16.5, 24];
echo '<pre>';
$timeArr = array_map('convertNumberToTime', $timeArr);
var_dump($timeArr);

function convertNumberToTime($time)
{
    if($time == 24){
        $hours = 23;
        $minutes = 59;
        $seconds = 59;
    } else {
        $hours = floor($time);
        $minutes = ($time-$hours) * 60;
        $seconds = 0;
    }
    $timeString = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
    return $timeString;
}

答案 2 :(得分:0)

使用strtotime,但受hourminute的限制

<?php
$arr = [7, 13.5, 15, 16.5, 24];
$timeArr = [];
foreach($arr as $k=>$v){
  if($v > 23.5){
    $v = "23.59.59";
  }else{
    $v = (int)$v + (($v - (int)$v)*6)/10; 
    $v = number_format($v,2);
  }
  echo date("H:i:s",strtotime($v))."\n";
}
?>

实时演示:https://eval.in/1087973

输出:

07:00:00
13:30:00
15:00:00
16:30:00
23:59:59

答案 3 :(得分:0)

   <?php

 $data=array(7, 13.5, 15, 16.5, 24);
 $timestamp=array();

 foreach ($data as $value) {
    $MM="00";
    $HH=$value;
    if(is_float($value)){
       $HH=substr($value, 0, -2);
       $MM="30";
    }
    if($HH<10)
       $HH="0".$HH;
    $TIME=$HH.":".$MM.":00";
    if($HH==24)
       $TIME="23:59:59";
    array_push($timestamp,$TIME);
}

var_dump($timestamp);

?>

输出:

 array(5) {
  [0]=>
  string(8) "07:00:00"
  [1]=>
  string(8) "13:30:00"
  [2]=>
  string(8) "15:00:00"
  [3]=>
  string(8) "16:30:00"
  [4]=>
  string(8) "23:59:59"
}

链接:https://www.jdoodle.com/a/169l