所以我有一个问题。尝试将输入从表单文本输入字段转换为以下格式:08/06/2013到可插入mysql datetime列的值。
我试过这个
$startdate_timestamp = strtotime($this->startdate);
// $this->startdate is the value from the input field
$this->startdate = date("YYYY-MM-DD HH:MM:SS",$startdate_timestamp);
但它似乎没有做任何事情。除此之外还有其他方法吗?我正在使用Yii框架,这就是代码看起来很奇怪的原因:)
答案 0 :(得分:5)
strtotime()
很聪明,但它不是通灵者或天才,当它搞砸了,它会搞砸了。不要使用它,尤其是m/d/y
这样的模糊格式。我们无法保证不会将其视为d/m/y
。
使用date_create_from_format()代替,可让您明确指定输入格式。这样更可靠,因为您可以控制d
和m
部分的处理方式:
$ts = date_create_from_format('m/d/Y', '08/06/2013');
$start_date = $ts->format('Y-m-d H:i:s');
答案 1 :(得分:1)
使用MySQL查询超级大国插入时执行此操作。 PHP日期函数是PITA:INSERT INTO FOO(date_field)值(DATE_FORMAT($ this-> startdate,'%Y%M%D'));希望有所帮助!
答案 2 :(得分:-1)
$this->startdate = date("Y-m-d H:i:s", strtotime($this->startdate));
这将使其符合与MYSQL兼容的YYYY-MM-DD HH:MM:SS格式。