我正在尝试创建持续时间。
我有一个用户选项可以输入任何格式的持续时间: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 :(得分:0)
为您的问题编写逻辑。根据您的要求更改日期格式。 好像你在使用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