上午和下午将时间转换为小时和分钟

时间:2018-02-22 05:29:40

标签: php

目前,我的数据如下。但是,它不是时间戳值。这是一个时间本身

$start_time = '150630';
$end_time = '180630';

我想更改{i}尝试的格式

03:06 PM – 06:06 PM

但格式和价值并不像预期的那样。 请帮我解决这个问题

3 个答案:

答案 0 :(得分:2)

您不需要时间转换器,因为您的字符串不是有效的时间戳。相反,这是时间本身。您只需要提取hourminsecond

请参阅下文

<?php

$start_time = "150630";

$hours = substr($start_time, 0, 2); // this is actual hours
$mins = substr($start_time, 2, 2); // this is actual minutes
$secs = substr($start_time, 4, 2); // this is actual seconds    

if ($hours < 12) {
    $actTime = "$hours:$mins:$secs AM";
} else {
    $actTime = ($hours-12).":$mins:$secs PM";
}

echo $actTime; // this is the time format you want

答案 1 :(得分:2)

您可以使用str_split功能,因为您的时间格式不是时间戳。

它会提取hoursminutesseconds

检查以下代码:

<?php
$start_time = '150630';
$end_time = '180630';

$startTimeA = str_split($start_time, 2);
$endTimeA = str_split($end_time, 2);

$startTime = "";
$AmOrPm = "AM";
if ($startTimeA[0] > 12) {
    $startTime .= (int) ($startTimeA[0] - 12);
    $AmOrPm = "PM";
}
echo $startTime .= ":" . $startTimeA[1] . " " . $AmOrPm;


$endTime = "";
$AmOrPm = "AM";
if ($endTimeA[0] > 12) {
    $endTime .= (int) ($endTimeA[0] - 12);
    $AmOrPm = "PM";
}
echo $endTime .= ":" . $endTimeA[1] . " " . $AmOrPm;

?>

答案 2 :(得分:-1)

使用Php日期FunctionStrtotime

strtotime - 将任何英文文本日期时间描述解析为Unix时间戳。 并转换它像

echo $start_time = date('h:i:a' , strtotime(150630));
//o/p 03:06:pm