Php Laravel:将日期保存到MySQL
在我的控制器中,当我创建一个事件时,它保存得非常好。用户以Php Laravel:将日期保存到MySQL,php,mysql,datetime,laravel-4,Php,Mysql,Datetime,Laravel 4,在我的控制器中,当我创建一个事件时,它保存得非常好。用户以dd-mm-yyyy格式输入日期,并以MySQLDATETIME格式保存。然后,details视图将其完全渲染,就像通过模型绑定的edit视图一样。 当我试图从编辑表单中保存时,日期以某种方式失败并返回1970-01-01 00:00:00 我不太清楚为什么这只发生在我的update方法上,因为我的store方法本质上是相同的 $input = Input::all(); $input['plannedTime'] = date('Y-m
dd-mm-yyyy
格式输入日期,并以MySQLDATETIME
格式保存。然后,details
视图将其完全渲染,就像通过模型绑定的edit
视图一样。
当我试图从编辑
表单中保存时,日期以某种方式失败并返回1970-01-01 00:00:00
我不太清楚为什么这只发生在我的update
方法上,因为我的store
方法本质上是相同的
$input = Input::all();
$input['plannedTime'] = date('Y-m-d H:i:s', strtotime(Input::get('plannedTime')));
为什么
update
方法没有返回错误,验证是可以的,但它仍然不能正确保存它?MySQL从来没有为无效日期返回任何错误,就我所记得的,它只是将它设置为历元,就是这样
在与站点通信时,应强制将日期始终转换为“Y-m-d H:i:s”格式,并仅在输出端以“d-m-Y”格式显示日期
你应该试着使用它
public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
从格式创建日期时间对象。如果您知道您的格式(如本例中的格式),那么请提供该格式并获取一个日期对象,该对象将正确保留
“plannedTime”的值是一个日期格式为d-m-Y H:i:s的字符串 这是你的问题。PHP的strotime尽了最大努力,但是
04-05-2015 00:00:00
可能是4月5日或5月4日,具体取决于您居住的地方
例如,在我的安装中,strotime('04-13-2014 00:00:00')
失败(将转换为0,将转换为1970-01-01)
Laravel的date
验证需要一个strotime可以处理的值。如果使用的日期格式不明确,请使用createFromFormat
对其进行解析,然后使用format
以更标准的格式将其输出
$date = DateTime::createFromFormat('d-m-Y H:i:s', Input::get('plannedTime'));
$usableDate = $date->format('Y-m-d H:i:s');
Input::get('plannedTime')
的值是多少?plannedTime'的值是一个日期格式d-m-Y H:i:s
的字符串。谢谢你的快速回答,马修!现在,当我在模型中通过验证运行编辑的plannedTime时,我收到一个错误“计划时间不是有效日期”。我的模型将“plannedTime”描述为“required | date”。将代码更改为:$date=DateTime::createFromFormat('d-m-Y H:i:s',Input::get('plannedTime')代码>$input['plannedTime']=$date->format('Y-m-dh:i:s')
立即接收对布尔值上的成员函数format()的调用(本例中为$date)。如果$date
是布尔值输入::get('plannedTime')
不是d-m-Y H:i:s
。