如何在MySQL和PHP中处理日期和时间?
我正在使用CodeIgniter 2.1.x和MySQL。如何在MySQL和PHP中处理日期和时间?,php,mysql,codeigniter-2,Php,Mysql,Codeigniter 2,我正在使用CodeIgniter 2.1.x和MySQL。 我在使用mysql列类型DATETIME和TIMESTAMP之间找到了很多建议,但我不确定哪一个是真正正确的,可以用于我想要构建的内容 我有一个应用程序,用户可以通过向谷歌地图添加标记。 每次提交标记后,应记录mysql列date\u created和date\u end的当前时间,通过使用此函数,该列应为+1day: class Maps extends CI_Controller{ ... public functi
我在使用mysql列类型
DATETIME
和TIMESTAMP
之间找到了很多建议,但我不确定哪一个是真正正确的,可以用于我想要构建的内容
我有一个应用程序,用户可以通过
向谷歌地图添加标记。
每次提交标记后,应记录mysql列date\u created
和date\u end
的当前时间,通过使用此函数,该列应为+1day:
class Maps extends CI_Controller{
...
public function marker($action = NULL, $slug = 'marker_add'){
...
if($this->form_validation->run() == TRUE){
$tomorrow = now() + 86400;
$data_markers = array(
'tid' => $this->input->post('formMarkType'),
'lat' => $this->input->post('formMarkLat'),
'lng' => $this->input->post('formMarkLng'),
'state' => 1,
'description' => $this->input->post('formMarkDescription'),
'date_end' => $tomorrow
);
$this->map_model->markers_add($data_markers);
redirect(site_url());
}
...
}
}
但当我使用设置为TIMESTAMP
或DATETIME
的列类型时,它永远不会正确更新
如果CodeIgniter上存在
now()
函数(在普通PHP上不存在),那么检查它的输出是否与以下格式匹配:Y-m-dh:I:s
,否则,这个问题可以帮助您:,另外,如果now(),您可以使用而不是now()
函数存在于CodeIgniter上(它不存在于普通PHP上),然后检查它的输出是否匹配以下格式:Y-m-d H:i:s
,否则,这个问题可以帮助您:,另外,您可以在插入之前使用而不是now()
var dump$。检查其格式,如果不正确,请加载日期帮助程序并使用mdate()
var在插入前明天转储$。检查其格式,如果不正确,请加载日期帮助程序并使用mdate()
这也取决于你是否关心时区。如果一个用户说在澳大利亚做了一些事情,而另一个用户在美国需要看到这些事情,那么您需要将日期时间存储在用户各自时区的上下文中 如果这不是你的问题,这将工作
$dt = new DateTime ('+1 day' , new DateTimeZone('Australia/Hobart'));
$tomorrow = $dt->format('Y-m-d H:i:s');
只需使用离服务器最近的大陆/城市作为时区
如果用户在不同的时区。最好将$datetime保存在“UTC”时区(即新的DateTimeZone(“UTC”)中),然后可以在请求数据的用户的用户时区中呈现datetime
例如
这也取决于你是否关心时区。如果一个用户说在澳大利亚做了什么,而另一个美国用户需要看到这件事,那么你需要将日期时间存储在用户各自时区的上下文中 如果这不是你的问题,这将工作
$dt = new DateTime ('+1 day' , new DateTimeZone('Australia/Hobart'));
$tomorrow = $dt->format('Y-m-d H:i:s');
只需使用离服务器最近的大陆/城市作为时区
如果用户位于不同的时区。最好将$datetime保存在“UTC”时区(即新的DateTimeZone(“UTC”)中),然后可以在请求数据的用户的用户时区中呈现datetime
例如
是的,它是ci提供的某种日期助手,在执行
now()
,这是输出的1377551478
,我想以这种格式存储数据(时间戳),但是,它就是不让它发生,我总是在标记中这样做。date\u end
->0000-00-00 00:00:00
即使列的类型设置为TIMESTAMP
。?感谢链接,当前检查它,顺便说一句,您提供的链接,我已经尝试过了,它现在正在工作,我认为问题在MYSQL处理中的某个地方,是吗因为它只是不会更新数据,而在另一个POSSI中建议将这个添加到您的答案中,请考虑更新您的帖子,这样我就可以接受它。我用MySQL来代替它,而不是PHP WORD()是,它是由CI提供的某种日期帮助器,同时做<代码>现在()。,这是输出的1377551478
,我想以这种格式(时间戳)存储数据,但是,它就是不让它发生,我总是在标记中这样做。date\u end
->0000-00-00 00:00:00
即使列的类型设置为TIMESTAMP
。?感谢链接,当前检查它,顺便说一句,您提供的链接,我已经尝试过了,它现在正在工作,我认为问题在MYSQL处理中的某个地方,是吗因为它不会更新数据,而在另一个POSSI中建议把这个添加到你的答案中,请考虑更新你的帖子,这样我就可以接受它。我用MySQL做了它,而不是PHP WORD()以前的帖子可能会有帮助:以前的帖子可能会有帮助: