PHP-创建持续时间

PHP-创建持续时间,php,wordpress,Php,Wordpress,我正在尝试创建一个持续时间 我有一个用户选项,可以输入以下任意格式的持续时间:0.5、1、1.5、2、2.5等 我有一个WordPress发布日期(用作开始时间),完成时间是通过上面的用户输入计算出来的。它们共同构建了一个持续时间 示例: 用户输入1-示例输出:持续时间:16:30-17:30 问题: 如果用户输入的不是整数,则当前无法输出正确的结束时间 因此,1,2,3 ect可以正常工作,但是0.5,1.5,2.5都会出错,并显示错误的结束时间 我需要第二双眼睛,我看不出我的错误 /

我正在尝试创建一个持续时间

我有一个用户选项,可以输入以下任意格式的持续时间:0.5、1、1.5、2、2.5等

我有一个WordPress发布日期(用作开始时间),完成时间是通过上面的用户输入计算出来的。它们共同构建了一个持续时间

示例:

用户输入1-示例输出:持续时间:16:30-17:30

问题:

如果用户输入的不是整数,则当前无法输出正确的结束时间

因此,1,2,3 ect可以正常工作,但是0.5,1.5,2.5都会出错,并显示错误的结束时间

我需要第二双眼睛,我看不出我的错误

    // Get user duration option - 0.5, 1, 1.5, 2 ect
    $course_hours = floatval(get_field('hours'));
    $course_minutes = ($course_hours % 1) * 60;

    $end_hour = intval(get_the_date('H'));
    $end_minute = intval(get_the_date('i'));
    $end_ampm = get_the_date('a');

    if($course_minutes != 0 && $course_minutes + $end_minute <= 59){
        $end_minute += $course_minutes;
        $end_hour += floor($course_hours);
    }
    elseif($course_minutes != 0 && $course_minutes + $end_minute > 59){
        $end_minute = ($course_minutes + $end_minute) % 60;
        $end_hour += floor($course_hours) + 1;
    }
    elseif($course_minutes == 0){
        $end_hour += floor($course_hours);
        if ($end_minute == 0){$end_minute = '00';}
    }

    $end_time = $end_hour.':'.$end_minute;
    $safe_post_status = get_post_status();

    //Demo output
    echo the_date('d F Y G:i'); 
    echo ' - '.$end_time;
//获取用户持续时间选项-0.5、1、1.5、2等
$course_hours=floatval(获取字段('hours');
$course\u minutes=($course\u hours%1)*60;
$end_hour=intval(获取日期('H');
$end_minute=intval(获取日期('i');
$end_ampm=获取日期('a');
如果($course\u minutes!=0&$course\u minutes+$end\u minutes 59){
$end_minutes=($course_minutes+$end_minutes)%60;
$end_hour+=楼层($course_hour)+1;
}
elseif($course\u minutes==0){
$end_hour+=楼层($course_hour);
如果($end_minute==0){$end_minute='00';}
}
$end_time=$end_hour.':'.$end_minute;
$safe_post_status=get_post_status();
//演示输出
重复日期('dfy G:i');
回声'-'.$end_时间;

谢谢

为您的问题编写逻辑。根据您的要求更改日期格式。 好像你在用wordpress

    $course_hours = (get_field('hours'));
    $course_minutes = ($course_hours) * 60;
    $formatter = [];
    $increment = 0.5;
    $h = $increment * 60;
    while ($h < $course_minutes ) {

        $key = date('H:i', strtotime(date('Y-m-d') . ' + ' . $h . ' minutes'));
        $value = date('h:i', strtotime(date('Y-m-d') . ' + ' . $h . ' minutes'));
        $formatter[$key] = $value;
        $h = $h + ($increment * 60 );
    }
    echo $output = implode(" - ",$formatter);
    // 12:30 - 01:00 - 01:30 - 02:00
$course\u hours=(获取字段('hours');
$course\u minutes=($course\u hours)*60;
$formatter=[];
$increment=0.5;
$h=$increment*60;
而($h<$course\u分钟){
$key=date('H:i',strottime(date('Y-m-d').+'.$H.'minutes'));
$value=date('h:i',strottime(date('Y-m-d').+'.$h.'minutes'));
$formatter[$key]=$value;
$h=$h+($increment*60);
}
echo$output=内爆(“-”,$formatter);
// 12:30 - 01:00 - 01:30 - 02:00

输出应为:16:00-16:30或09:00-10:00等。你能更新以反映吗?哦,对不起,我误解了。让我想想,我不是100%理解编辑,你能在我的初始代码的上下文中发布吗?你可能需要对你的要求做一些更改。执行此代码并尝试更改输入的位感谢,您提供的输出以时间为增量。不是像12:30-13:00这样的时间格式,这是我想要做的。