2011-05-23 56 views
3

我把MySQL的当前日期和时间使用PHP时间不是现在显示PM,只有AM

$datecreated = date("Y-m-d, g:i:s A"); 

然后显示给用户与

$datecreated = date('n-j-Y, g:i:s A', strtotime($row['datecreated'])); 

一切都很正常,除了时间总是AM。我已经在早上和下午测试过了,现在仍然是AM。

回答

3

写入数据库时​​使用date("Y-m-d H:i:s")(24小时制表示法)。
否则,“PM”(或“AM”)部分会被截断,让您始终处于“AM”状态。

0

我相信这个问题是由于您的日期格式选择12小时的时间。因为它们都是24小时格式(0-23),所以将小写字母g更改为“G”(无前导零)或“H”(带前导零),而“g”是12小时格式(0-12 )。

+1

该OP认为'A'会允许12小时的时间。这是否属实。 :) – 2011-05-23 20:45:05

+0

啊,当然..只是发现了真正的问题。现在我觉得很愚蠢:/ – SmokeyPHP 2011-05-23 20:48:24

+0

对你的第二次尝试不错;) – 2011-05-23 20:54:21

2

您应该使用一个DATETIME字段,它以24小时格式存储日期和时间。

您可以使用MySQL NOW功能来存储当前时间:

INSERT INTO mytable 
(mydatefield) 
VALUES 
(NOW()) 

如果您需要做的是在PHP中,你可以这样做:

$datecreated = date('Y-m-d H:i:s'); 

这将其存储在24-小时时间格式。然后,您可以在选择函数后使用PHP date函数或使用MySQL DATE_FORMAT函数将其格式化为12小时。

+0

你能解释一下这个具体情况吗? – 2011-05-23 20:45:38

+0

谢谢。 24小时格式工作。 – DanielOlivasJr 2011-05-23 21:08:16

0

为什么不使用date(“Y-m-d,G:i:s”)?

0

你也可以改变你的服务器的时钟,而不是等到下午来测试它。

+1

应该是一个评论。 – 2011-05-23 20:44:31

0

您应该尝试使用24小时日期时间格式插入MySQL。 MySQL可能会忽略日期字符串中的AM/PM,因此所有内容都保存为AM。

$datecreated = date("Y-m-d H:i:s");