仅将 H:i:s 转换为分钟,但 array_map() 给出错误
converting H:i:s to minutes only but array_map() giving errors
我正在尝试将长数据类型数据转换为我成功的时间。
在每个会话时间数组中,我都有 ["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)
}
您似乎从有效的时间戳开始 - 自 1970 年 1 月 1 日以来经过的秒数 - 所以要以分钟为单位计算两个值之间的差异,您只需将一个值减去另一个值并将其乘以 60。
如果您想要更好地控制您的数据,例如稍后以不同的方式格式化它,我建议您使用 DateInterval
对象,而不是您现在使用的两个时间戳和字符串之间的差异。请注意,两个时间戳之间的差异本身并不是有效的时间戳,因此您不能使用 date()
对其进行格式化。
您需要从 convert_to_time
函数中移出 array_map("get_minutes",$each_session_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);
考虑到您正在使用像 "XX:YY:ZZ" 这样的字符串,您可以尝试
$split = explode(":",$session_time); $minutes = $split[1];
获取字符串的 "i" 部分。
您还可以通过在第一个循环中执行 new DateTime($each_session);
并根据数据对该对象使用 DateTime::format("H:i:s")
和 DateTime::format("i")
来使用 dateTime 对象 (http://php.net/manual/en/class.datetime.php)你需要
我正在尝试将长数据类型数据转换为我成功的时间。
在每个会话时间数组中,我都有 ["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)
}
您似乎从有效的时间戳开始 - 自 1970 年 1 月 1 日以来经过的秒数 - 所以要以分钟为单位计算两个值之间的差异,您只需将一个值减去另一个值并将其乘以 60。
如果您想要更好地控制您的数据,例如稍后以不同的方式格式化它,我建议您使用 DateInterval
对象,而不是您现在使用的两个时间戳和字符串之间的差异。请注意,两个时间戳之间的差异本身并不是有效的时间戳,因此您不能使用 date()
对其进行格式化。
您需要从 convert_to_time
函数中移出 array_map("get_minutes",$each_session_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);
考虑到您正在使用像 "XX:YY:ZZ" 这样的字符串,您可以尝试
$split = explode(":",$session_time); $minutes = $split[1];
获取字符串的 "i" 部分。
您还可以通过在第一个循环中执行 new DateTime($each_session);
并根据数据对该对象使用 DateTime::format("H:i:s")
和 DateTime::format("i")
来使用 dateTime 对象 (http://php.net/manual/en/class.datetime.php)你需要