首先很抱歉,如果有人问过这个问题,我几乎可以肯定会提出,但是我找不到能完全回答我的问题的帖子。
这是使用api插入数据的用户流程。
这是我的桌子。
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(250) NOT NULL,
`releaseDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`createdDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
将数据发布到api。
# POST /v1/tests
? title=test
这将使用createdDate当前时间戳和releaseDate当前时间戳创建我的记录。
现在我想通过get api调用来检索我的数据,其日期格式设置为ISO8601
// My test model just retrieves data for a row
function test_model_test($id){
$query = $this->db->get_where('test', array('id' => $id)0);
return ($query->num_rows() > 0) ? $query->row() : false;
}
// Test api call to retrieve the data I need the date in ISO8601 format
function test_get(){
$data = $this->test_model->test($this->get('id'));
$response = array(
'id' => $data->id,
'title' => $data->title,
'releaseDate' => $data->releaseDate->format(\DateTime::ISO8601)
}
$this->response([
'status' => TRUE,
'message' => 'Successful',
'data' => $response
], REST_Controller::HTTP_OK);
}
运行此命令时出现错误。
Call to a member function format() on string /
我需要将日期从字符串转换为日期然后格式化吗?
我可以使用mysql这样返回当前格式的数据。
$query = $this->db->query('SELECT *,
DATE_FORMAT(releaseDate, "%Y-%m-%dT%TZ") AS releaseDateFormatted,
DATE_FORMAT(createdDate, "%Y-%m-%dT%TZ") AS createdDateFormatted,
FROM test
WHERE id = ' . $id . '
');
我不确定做到这一点的最佳方法,如果我只是保持mysql干净,可能会有很多我认为这将使我能够根据需要将php中的格式更改为其他格式。
真的会感谢任何建议,最佳做法等吗?
谢谢
更新此作品
$releaseDate = new DateTime($value->releaseDate);
$releaseDate->format(\DateTime::ISO8601);