首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel:将日期保存到MySQL

问Laravel:将日期保存到MySQL
EN

Stack Overflow用户
提问于 2015-04-16 03:21:02
回答 2查看 30K关注 0票数 6

在我的控制器中,当我create一个事件时,它保存得非常好。用户以dd-mm-yyyy格式输入日期,日期将以MySQL DATETIME格式保存。然后,就像通过模型绑定的edit视图一样,details视图将它完全呈现出来。只要我尝试从edit表单中保存,日期就会以某种方式失败并返回1970-01-01 00:00:00。

我不太确定为什么这只发生在我的update方法上,因为我的store方法在本质上是相同的。

代码语言:javascript
复制
$input = Input::all();
$input['plannedTime'] = date('Y-m-d H:i:s', strtotime(Input::get('plannedTime')));

为什么update方法没有返回错误,验证是正确的,但是仍然不能正确地保存它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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以更标准的格式显示它。

代码语言:javascript
复制
$date = DateTime::createFromFormat('d-m-Y H:i:s', Input::get('plannedTime'));
$usableDate = $date->format('Y-m-d H:i:s');
票数 12
EN

Stack Overflow用户

发布于 2015-04-16 03:27:38

据我所知,MySQL从来不会为无效的日期返回任何错误,它只是将其设置为EPOCH,仅此而已!

在与站点通信时,您应该强制日期始终转换为"Y-m-d H:i:s“格式,并仅在输出端以"d-m-Y”显示日期。

您应该尝试并使用

代码语言:javascript
复制
public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )

若要从格式创建datetime对象,请执行以下操作。如果您知道您的格式,例如在本例中,那么提供格式并获取一个date对象,该对象将被正确持久化!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29658978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档