我在网站页面上设置了时区:
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 小时格式才能使其正常工作?
请开始在DATETIME
、DATE
或TIME
字段中以Y-m-d
/H:i:s
格式存储日期/时间。你和我们的生活会容易得多。
在此之前,请使用以下 PHP 解决方案:
$dt = DateTime::createFromFormat('!h:i:sa', $row['Time']);
echo $dt->format('H:i:s');
演示
或 MySQL 解决方案:
SELECT STR_TO_DATE('08:46:07am','%h:%i:%s%p')