在我的控制器中,当我create一个事件时,它保存得非常好。用户以dd-mm-yyyy格式输入日期,日期将以MySQL DATETIME格式保存。然后,就像通过模型绑定的edit视图一样,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方法没有返回错误,验证是正确的,但是仍然不能正确地保存它?
发布于 2015-04-16 03:41:00
'plannedTime‘的值是日期格式为d-m-Y H:i:s的字符串。
这就是你的问题所在。PHP的strtotime尽了最大努力,但04-05-2015 00:00:00可能是4月5日或5月4日,这取决于您住在哪里。
例如,在我的安装中,strtotime('04-13-2014 00:00:00')失败(它将被转换为0,它将被转换为1970-01-01)。
Laravel的date验证需要一个strtotime可以处理的值。如果您正在使用不明确的日期格式,请使用createFromFormat解析它,然后使用format以更标准的格式显示它。
$date = DateTime::createFromFormat('d-m-Y H:i:s', Input::get('plannedTime'));
$usableDate = $date->format('Y-m-d H:i:s');发布于 2015-04-16 03:27:38
据我所知,MySQL从来不会为无效的日期返回任何错误,它只是将其设置为EPOCH,仅此而已!
在与站点通信时,您应该强制日期始终转换为"Y-m-d H:i:s“格式,并仅在输出端以"d-m-Y”显示日期。
您应该尝试并使用
public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )若要从格式创建datetime对象,请执行以下操作。如果您知道您的格式,例如在本例中,那么提供格式并获取一个date对象,该对象将被正确持久化!
https://stackoverflow.com/questions/29658978
复制相似问题