Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用am和pm将时间转换为小时和分钟_Php - Fatal编程技术网

Php 使用am和pm将时间转换为小时和分钟

Php 使用am和pm将时间转换为小时和分钟,php,Php,目前,我有如下数据。但是,它不是一个时间戳值。那是一个时代本身 $start_time = '150630'; $end_time = '180630'; 我想更改格式,如我尝试的03:06 PM–06:06 PM $init = 150630; $hours = floor($init / 3600); $minutes = floor(($init / 60) % 60); $seconds = $init % 60; echo "$hours:$minutes:$seconds";

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

$start_time = '150630';
$end_time = '180630';
我想更改格式,如我尝试的
03:06 PM–06:06 PM

$init = 150630;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;

echo "$hours:$minutes:$seconds";
但格式和值与预期不符。 请帮助我如何解决这个问题

使用Php日期和

strotime—将任何英文文本datetime描述解析为Unix时间戳。 并将其转换为

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

您不需要时间转换器,因为您的字符串不是有效的时间戳。取而代之的是时间本身。您只需提取
小时
分钟

请参阅下文

<?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

您可以使用
stru split
函数,因为您的时间格式不是时间戳

它将提取
小时
分钟

检查以下代码:

<?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;

?>


我想你甚至不明白你的开始时间和结束时间format@Kasnady-对不起,如果我做错了什么。请更正我的最新答案。这是我的荣幸。@traker你确定结果与你预期的一样吗?@rahushrivastava me。。我投了反对票,这导致结果与问题的预期不符当时间是
00:30:00 AM
时,它没有给出正确的结果,请检查它给出
03:36:00 pm
谢谢你的回答..谢谢亲爱的,它也在工作。完美