PHP将时间转换为带/不带冒号的十进制
我正在尝试为工作创建一个工资计算器,他们使用十进制时间按分钟向我们支付工资。即8.5个单位,而不是8:30 由于使用这个的人数,我试图解释冒号和非冒号的使用,以及3位和4位数字(我们在24小时内工作,所以有些人将使用230而不是02:30) 到目前为止,我得到的代码是:PHP将时间转换为带/不带冒号的十进制,php,Php,我正在尝试为工作创建一个工资计算器,他们使用十进制时间按分钟向我们支付工资。即8.5个单位,而不是8:30 由于使用这个的人数,我试图解释冒号和非冒号的使用,以及3位和4位数字(我们在24小时内工作,所以有些人将使用230而不是02:30) 到目前为止,我得到的代码是: function timeValidation($time) { $time = strpos($time, ':'); if( $time == true ) { $time = explod
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);
函数时间验证($time){
$time=strpos($time,,:');
如果($time==true){
$time=explode(“:”,$time);
$time=$time[0]。$time[1];
}
如果(strlen($time)在试图确定函数是否有冒号时,您正在覆盖函数中的$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);
$start='18:30';
函数时间验证($time){
$isTime=strpos($time,,:');
如果($isTime==true){
$time=explode(“:”,$time);
$time=$time[0]。$time[1];
}
如果(strlen($time)在试图确定函数是否有冒号时,您正在覆盖函数中的$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);
$start='18:30';
函数时间验证($time){
$isTime=strpos($time,,:');
如果($isTime==true){
$time=explode(“:”,$time);
$time=$time[0]。$time[1];
}
如果(strlen($time)我可能误解了这个问题,但看起来你自己把它复杂化了
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
if (strlen($time) <= 3) {
$time = '0' . $time;
}
return $time;
}
我得到以下结果:
1830
0330
1830
0330
编辑:稍微整理一下:
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
return str_pad($time, 4, 0, STR_PAD_LEFT);
}
如果你想要一条一行的话只是为了好玩
function standardiseTimeFormat($time) {
return str_pad(str_replace(':', '', $time), 4, 0, STR_PAD_LEFT);
}
我可能误解了这个问题,但看起来你自己把它复杂化了
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
if (strlen($time) <= 3) {
$time = '0' . $time;
}
return $time;
}
我得到以下结果:
1830
0330
1830
0330
编辑:稍微整理一下:
function standardiseTimeFormat($time) {
$time = str_replace(':', '', $time);
return str_pad($time, 4, 0, STR_PAD_LEFT);
}
如果你想要一条一行的话只是为了好玩
function standardiseTimeFormat($time) {
return str_pad(str_replace(':', '', $time), 4, 0, STR_PAD_LEFT);
}
函数中的第一行覆盖您的原始时间$time=strpos($time,,:);
您能不能先删除冒号作为替换(':','',$string)的第一件事
从那时起,你只需要使用一种格式?@brainhuong谢谢你。我这么长时间盯着它看都没看到它。@鸽子,我想我可以。我已经有几年没有编写过越来越复杂的代码了,所以我需要花点时间才能重新开始。函数的第一行覆盖了你原来的时间$time=strpos($time,':');
您能不能先删除冒号,然后替换(':','',$string)
从那时起,你只需要使用一种格式?@brainhuong谢谢你。我盯着它看了这么久,错过了它。@鸽子,我想我可以。我已经有几年没有编写过越来越复杂的代码了,所以我需要一点时间才能重新开始。太棒了!谢谢你了。一双新鲜的眼睛真是一个奇迹太棒了。太棒了!谢谢你。一双新鲜的眼睛真是太棒了。可以用返回sprintf(“%04d”,$time)来简化
而不是,如果不是的话,看起来你已经完全理解了。我同意,这更整洁。我想我也可以把我的stru分割添加到这一点上,让生活更轻松。啊,酷,很高兴我能帮上忙@BigJazzz,确实根据你喜欢哪一个做了一些修改:pLol!我喜欢你。你使用“funsies”:P str_pad做什么?Ohhhh…填充字符串?可以使用返回sprintf('%04d',$time)来简化
而不是,如果不是的话,看起来你已经完全理解了。我同意,这更整洁。我想我也可以把我的stru分割添加到这一点上,让生活更轻松。啊,酷,很高兴我能帮上忙@BigJazzz,确实根据你喜欢哪一个做了一些修改:pLol!我喜欢你。你使用“funsies”:P.:str_pad是做什么的?哦…填充字符串?