我正在尝试将长数据类型数据转换为成功的时间。
在每个会话时间数组中,我有["1276999","787878","677267"]
之类的值。我在array_map
函数中传递了这个数组并转换为正在工作的时间。
现在在convert_time
函数中我调用另一个函数,使用array_map
每次都会转换(i.e 1:40:00 to 100 minutes
),但问题是我的第二个数组映射函数给了我array_map需要第二个参数为数组的错误...
$each_session_time = array();
for ($i=0; $i<sizeof($array_in_time_str) ; $i++) {
$each_session_time[$i]=$array_out_time_str[$i]-$array_in_time_str[$i];
}
//session time in hours
array_map("convert_to_time", $each_session_time);
function convert_to_time($each_session) {
# code...
$each_sess_time=array();
$each_sess_time=date("H:i:s",$each_session);
array_map("get_minutes",$each_sess_time);
return $each_sess_time;
}
function get_minutes($session_time) {
// algorithm to convert each session time to minutes)
}
答案 0 :(得分:1)
似乎你开始使用有效的时间戳 - 自1970年1月1日以来经过的秒数 - 所以要在几分钟内得到两个值之间的差异,你只需要从另一个中减去一个并将它乘以60.
如果您想要更好地控制数据,例如稍后对其进行不同的格式化,我建议使用DateInterval
个对象,而不是现在使用的两个时间戳和字符串之间的差异。请注意,两个时间戳之间的差异不是有效的时间戳,因此您无法使用date()
对其进行格式化。
答案 1 :(得分:1)
您需要从array_map("get_minutes",$each_session_time);
功能移出convert_to_time
。
示例:
<?php
$each_session_time=["1276999","787878","677267"];
//session time in hours
$times = array_map("convert_to_time", $each_session_time);
$minutes = array_map("get_minutes",$times);
function convert_to_time($each_session)
{
# code...
$each_sess_time=array();
$each_sess_time=date("H:i:s",$each_session);
return $each_sess_time;
}
function get_minutes($session_time)
{
//algo to convert each session time to minutes)
}
print_r($minutes);
答案 2 :(得分:1)
考虑到你正在处理类似&#34; XX:YY:ZZ&#34;你可以尝试
$split = explode(":",$session_time); $minutes = $split[1];
获得&#34; i&#34;字符串的一部分。
你也可以在第一个循环中使用new DateTime($each_session);
并在该对象上使用DateTime::format("H:i:s")
和DateTime::format("i")
来使用dateTime对象(http://php.net/manual/en/class.datetime.php),具体取决于你需要的数据