我在将日期正确地存储在列名称" publicationDate'下的MySQL数据库表中时遇到问题。通过HTML格式。
// Contruct Of The Data
public function __construct($data=array()) {
if (isset($data['id'])) $this->id = (int) $data['id'];
if (isset($data['publicationDate'])) $this->publicationDate = (int) $data['publicationDate'];
if (isset($data['content'])) $this->content = $data['content'];
}
// Values To Post/Store For The Webpage Forms
public function storeFormValues ($params) {
$this->__construct($params);
if (isset($params['publicationDate'])) {
$publicationDate = explode ('-', $params['publicationDate']);
if (count($publicationDate) == 3) {
list ($y, $m, $d) = $publicationDate;
$this->publicationDate = mktime (0, 0, 0, $m, $d, $y);
}
}
}
My SQL专栏" publicationDate'数据类型是' TIMESTAMP()' ' NOT NULL'默认' CURRENT_TIMESTAMP'。日期将被存储&格式化' 0000-00-00 00:00:00'。
" publicationDate'的HTML表单输入这是一个隐藏且不需要编辑的编辑表单,如下所示:
<input type="hidden" name="publicationDate" id="publicationDate" value="<?php if ($results['article']->id ==true) { echo date("Y-m-d g:i:s", $results['article']->publicationDate);} else { echo date("Y-m-d g:i:s");}?>"/>
它会存储这样的日期 - &#39; 0000-00-00 00:00:00&#39;这是&yyyy-mm-dd hh:mm:ss&#39;但只有年,月,和一天会正确显示。小时,分钟和&amp;秒将始终出现在MySQL全零(00:00:00)。显示/列出我的数据时,这显然是一个问题&#39; DESC&#39;当然,最近最重要的是在列表的顶部。
答案 0 :(得分:1)
由于您希望mysql
日期格式为'yyyy-mm-dd hh:mm:ss',因此您需要更改php
日期格式。
在两个实例中将date("Y-m-d g:i:s"
更改为date("Y-m-d H:i:s"
。
g
格式以12小时格式显示小时,不带前导零
而H
格式以24小时格式显示带有前导零的小时。
当你构造$publicationDate
时,你用小时= 0,分钟= 0,秒= 0来创建它。
如果您想在表单提交时填充$publicationDate
,请使用以下命令:
$publicationDate = mktime(date('H'), date('i'), date('s'), $m, $d, $y);
这将使用当前的小时,分钟和秒以及用户提交的月,日和年。
您应该在`storeFormValues函数中实际分配实际时间。
请参阅此处的mktime
手册答案 1 :(得分:0)
根据PHP日期函数(http://php.net/manual/en/function.date.php)的文档,g:g:i:s将是12小时格式的一小时没有前导零。它需要是H,这是一小时的24小时格式,带有前导零。