将时间从12小时格式更改为12小时AM / PM格式

时间:2014-12-01 00:56:16

标签: php mysql date

我已经在我的网站页面上设置了时区:

date_default_timezone_set("America/Los Angeles");

我已经宣布了一个时间变量:

$time = date("h:i:sa");

然后将其添加到数据库中。然后我从数据库中检索时间,试图重新格式化它:

$time2 = date("h:i A", strtotime($row['Time'])); 

然后打印出时间:

echo $time2;
然而,这种方法会混淆AM和PM。例如,如果在晚上11:59:00将$ time添加到数据库,它将在上午11:59而不是晚上11:59打印出来。我认为问题在于,当时间添加到数据库时,AM和PM之间没有明显的区别。但是,我仍然不确定如何解决这个问题。我已经尝试在AM PM中添加时间,例如:

$time = date("h:i:sa A");

然后像这样访问它:

$time2 = $row['Time'];

但这仍然无法修复错误。在保持我的12小时格式的同时还有办法解决这个问题吗?或者我是否必须更改为24小时格式才能使其生效?

1 个答案:

答案 0 :(得分:0)

请开始在Y-m-dH:i:sDATETIME字段中以DATE / TIME格式存储日期/时间。你的生活和我们的生活会容易得多。

在此之前,请使用此PHP解决方案:

$dt = DateTime::createFromFormat('!h:i:sa', $row['Time']);
echo $dt->format('H:i:s');

demo

或mysql解决方案:

SELECT STR_TO_DATE('08:46:07am','%h:%i:%s%p')