我正在尝试为工作创建一个付费计算器,他们使用十进制时间向我们付款。即 8.5单位而非8:30 。
由于有多少人将使用这个,我试图考虑结肠和非结肠使用,以及3和4位数(我们在24小时工作,所以一些人们将使用230而不是02:30。)
我到目前为止的代码是:
function timeValidation($time) {
$time = strpos($time, ':');
if( $time == true ) {
$time = explode(':', $time);
$time = $time[0].$time[1];
}
if( strlen($time) <= 3 ) {
$time = '0'.$time;
}
return $time;
}
echo $start = timeValidation($start);
当我在函数之外单独运行它时,它按预期工作,但是一旦它在函数中,我就没有得到我期望的输出。我不确定这是因为我的函数错误还是函数内部的逻辑。
我搜索过可能对我有帮助的问题,但我似乎找不到任何东西。我很高兴有人指出类似的问题,如果有的话。
提前感谢您的帮助。
答案 0 :(得分:4)
我可能会误解这个问题,但看起来你自己已经过度复杂了。
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
if (strlen($time) <= 3) {
$time = '0' . $time;
}
return $time;
}
所以,如果我通过:
$time_one = '18:30';
$time_two = '3:30';
$time_three = '1830';
$time_four = '330';
我得到以下结果:
1830
0330
1830
0330
编辑:稍微清理一下:
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
return str_pad($time, 4, 0, STR_PAD_LEFT);
}
只是为了 funsies ,如果你想要一个班轮..
function standardiseTimeFormat($time) {
return str_pad(str_replace(':', '', $time), 4, 0, STR_PAD_LEFT);
}
答案 1 :(得分:2)
当您尝试确定它是否有冒号时,您正在覆盖函数内的$time
变量。试试这个:
$start = '18:30';
function timeValidation($time) {
$isTime = strpos($time, ':');
if( $isTime == true ) {
$time = explode(':', $time);
$time = $time[0].$time[1];
}
if( strlen($time) <= 3 ) {
$time = '0'.$time;
}
return $time;
}
echo $start = timeValidation($start);
输出:
1830