1

所以我有一个问题。尝试将来自以下格式的表单文本输入字段的输入: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 框架,所以这就是为什么代码看起来很奇怪 :)

4

3 回答 3

5

strtotime()很聪明,但它不是通灵者或天才,当它搞砸时,它会搞砸大事。不要使用它,尤其是对于像m/d/y. 不能保证它不会被视为d/m/y.

请改用date_create_from_format(),它可以让您明确指定输入格式。这要可靠得多,因为您将控制如何处理dm部分:

$ts = date_create_from_format('m/d/Y', '08/06/2013');
$start_date = $ts->format('Y-m-d H:i:s');
于 2013-08-16T18:52:51.440 回答
1

使用 MySQL 查询超能力在插入时执行此操作。PHP 日期函数是一个 PITA: INSERT INTO FOO (date_field) values (DATE_FORMAT($this->startdate, '%Y %M %D')); 希望有帮助!

于 2013-08-16T18:58:10.623 回答
-1
$this->startdate = date("Y-m-d H:i:s", strtotime($this->startdate));

这会将其置于与 MYSQL 兼容的 YYYY-MM-DD HH:MM:SS 格式。

于 2013-08-16T18:53:02.787 回答