我在通过Model将日期保存到DB中时遇到问题。在我的控制器中,如果我将从$_POST接收到的日期转储到日志中,我将得到格式为“10/Nov/2012 07:30”的日期。如果我用途:
$AccountAppointment->start_date=Yii::app()->dateFormatter->format($_POST['AccountAppointment']['start_date'], 'dd/M/yyyy HH:mm');
我得到的错误:
Invalid datetime format: 1292 Incorrect datetime value: '10/NoGMT+5/2012 07:30' for column 'start_date'
将dateFormatter中的格式更改为“dd/M/yyyy HH:mm”或“dd/MM/yyyy HH:mm”或“dd/MMM/yyyy HH:mm”会引发相同的错误。
数据库是MySQL 5.0,Yii版本1.1.12.
任何帮助都将不胜感激,我几乎被卡住了...谢谢...
6条答案
按热度按时间cnwbcb6i1#
我以前也用过类似的方法,我用CDateTimeParser来解析日期,然后按照你想要的方式格式化它。
我想你可以做到这一点:
或
2cmtqfgy2#
您使用了错误的格式。“Nov”对应的模式是
MMM
,而不是M
(即没有前导零的整数月份)。dluptydi3#
我找不到任何可以将dd/MMM/yyyy HH:mm日期格式转换为MySQL的转换方法,所以创建了自己的方法。这只是一个变通方法,一旦我找到更好的解决方案,我会更新我的答案。以下是我创建的方法:
bd1hkmkf4#
更改日期选择器中的格式,默认格式为yy-mm-dd
4ngedf3f5#
我想你还不了解format的功能,请看下面。
您需要切换日期格式和时间。正确的是:
希望我能帮助一些人:)
ryhaxcpt6#
您可以使用内置的CDateTimeParser:
测试项目:
输出:
此外,我为上面的代码编写了一个 Package 函数,以考虑比较运算符,这样您就可以在CGridView过滤器中使用本地化的日期时间。也许它会有所帮助。请参见:https://stackoverflow.com/a/53759001/3090890