i有一个MySQL DB表,其中一个名为"timestamp"
的列,timestamp
的类型和on update CURRENT_TIMESTAMP
的属性和CURRENT_TIMESTAMP
的默认值。
如果我将记录添加到表中,指定其他值,而不是时间戳,则会像2016-12-28 17:02:26
一样自动添加时间戳。
在php中,我使用以下查询查询表格
SELECT * FROM history WHERE user_id = 9 ORDER BY timestamp ASC
查询的结果将其保存到$rows
中,我使用foreach
创建具有其他格式的其他值的数组。我正在尝试将时间戳格式化为英国类型24小时日期时间: dd/mm/yy, HH:MM:SS
。
我尝试了date()
和strftime()
的功能如下:
$formatted_datetime = strftime("%d %m %y %H %M %S", $row["timestamp"]);
$formatted_datetime = date("d/m/y, H:i:s", $row["timestamp"]);
这两个导致下面的通知和输出的日期时间不正确,就像01 01 70 00 33 36
:
注意:在/home/ubuntu/workspace/pset7/public/history.php上遇到的非形成良好的数字值
我是PHP和MySQL的新手,到目前为止,我所见过的其他问题或文档都没有成功地解决此转换。我不明白为什么strftime()
不起作用,也不理解如何正确执行?
要使用 DateTime
class的OO(和最灵活)的方法,并使用静态createFromFormat
方法实例化新的DateTime
对象:
$new_datetime = DateTime::createFromFormat ( "Y-m-d H:i:s", $row["timestamp"] );
现在,您可以使用$new_datetime
对象通过调用对象的format
方法来生成您想要的任何字符串表示:
echo $new_datetime->format('d/m/y, H:i:s');
要启动,由于您拥有DateTime
对象,因此您现在也可以进行任何转换(例如移动时区或添加天数),比较(比其他DateTime
更大或更少)和各种时间计算(多少天(多少天)/note/etc ...在此和另一个DateTime
之间)。
dateTime:http://php.net/manual/en/class.datempetime.php学习。爱它。活着。
通常在MySQL日期时间戳中节省时间为YYYY-MM-DD HH:MM:SS (2016-12-20 18:36:14)
femate您可以使用日期式构造轻松将它们作为您的愿望转换为您的愿望,但必须先将您的输入转换为时间。以下将执行技巧
$formatted_datetime = date("d/m/y, H:i:s", strtotime($row["timestamp"]));
为什么不使mysql完成工作?而且您真的想要MM/DD/YY,而不是DD/MM/YY?
SELECT *, DATE_FORMAT(timestamp, '%m/%d/%y, %T') formatted_date FROM ....
然后,您可以将格式化日期提取为$ row ['formatted_date']。
在日期是timestamp
类型的日期,其具有以下格式:'yyyy-mm-dd HH:MM:SS'或'2008-10-05 21:34:02。br>
$res = mysql_query("SELECT date FROM times;");
while ( $row = mysql_fetch_array($res) ) {
echo $row['date'] . "
";
}
php strtotime函数将MySQL时间戳解析为UNIX时间戳,该时间戳可以在PHP日期函数中用于进一步解析或格式化。
这是其他一些可能具有实际用途的样本日期输出格式:
echo date("F j, Y g:i a", strtotime($row["date"])); // October 5, 2008 9:34 pm
echo date("m.d.y", strtotime($row["date"])); // 10.05.08
echo date("j, n, Y", strtotime($row["date"])); // 5, 10, 2008
echo date("Ymd", strtotime($row["date"])); // 20081005
echo date('it is the jS day.', strtotime($row["date"])); // It is the 5th day.
echo date("D M j G:i:s T Y", strtotime($row["date"])); // Sun Oct 5 21:34:02 PST 2008
我将使用碳等级及其字符串格式
$carbon = Carbon::instance('2016-12-28 17:02:26');
然后您可以按照自己的方式格式化。