Php 在Mysql数据库中插入日期值

Php 在Mysql数据库中插入日期值,php,mysql,datetime,laravel-5.1,php-carbon,Php,Mysql,Datetime,Laravel 5.1,Php Carbon,我试图在MySQL表中插入一个日期值,如下所示(使用Laravel 5.1): 如果我插入一个日期12,它将被插入1970-01-01 我在用户模型中使用了雄辩的变体,如下所示: public function getBirthdateAttribute() { return date('d/m/Y', strtotime($this->attributes['birthdate'])); } public function setBirthdateAttribu

我试图在MySQL表中插入一个日期值,如下所示(使用Laravel 5.1):

如果我插入一个日期<12,它可以正常工作,而如果日期>12,它将被插入1970-01-01

我在用户模型中使用了雄辩的变体,如下所示:

public function getBirthdateAttribute() {
    return date('d/m/Y', strtotime($this->attributes['birthdate']));        
}

public function setBirthdateAttribute($value) {              
    $this->attributes['birthdate'] = Carbon::createFromFormat('Y-m-d', $value);
}
请问我的密码怎么了

改变这一点:

date("Y-d-m", strtotime($data['birthdate']));
致:

您的格式应该是这样的
dd-mm-yyyy
,如果它是这样的
dd/mm/yyyy

$date = '22/05/2012';
$date = str_replace('/', '-', $date);
$date = date('Y-m-d', strtotime($date));
更改此项:

date("Y-d-m", strtotime($data['birthdate']));
致:

您的格式应该是这样的
dd-mm-yyyy
,如果它是这样的
dd/mm/yyyy

$date = '22/05/2012';
$date = str_replace('/', '-', $date);
$date = date('Y-m-d', strtotime($date));
这是你们需要阅读和理解的部分

注:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式的日期歧义:如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧洲d-m-y格式。但是,如果年份以两位数格式给出,且分隔符为破折号(-),则日期字符串将解析为y-m-d

为了避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()

所以,因为您使用的是
/
作为分隔符,所以strotime()采用的是美国日期格式,并将日期和月份部分混淆了

这是您需要阅读和理解的部分

注:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式的日期歧义:如果分隔符为斜杠(/),则假定为美制m/d/y;而如果分隔符为短划线(-)或点(.),则假定为欧洲d-m-y格式。但是,如果年份以两位数格式给出,且分隔符为破折号(-),则将日期字符串解析为y-m-d

为了避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()


因此,因为您使用的是
/
作为分隔符,strotime()采用的是美国日期格式,并且将日期和月份部分混淆了

相同的问题。::如果我插入例如1990年3月1日,我将得到1990年1月3日,如果1990年1月13日是1970-01-01…:(
13/01/1990
-那将是1990年第13个月的第一天。非常感谢!!它很管用!!:俬俬俬俬)$日期='22/05/2012'$日期=str_replace(“/”、“-”、$date)$日期=日期('Y-m-d',标准时间($date));同一问题:/如果我插入例如1990年3月1日,我将得到1990年1月3日,如果1990年1月13日是1970-01-01…:(
13/01/1990
-那将是1990年第13个月的第一天。非常感谢!!它很管用!!:俬俬俬俬)$日期='22/05/2012'$日期=str_replace(“/”、“-”、$date)$日期=日期('Y-m-d',标准时间($date));然后是日期格式化问题请提供
$data['birthdate']
的示例数据。数据是如何输入的?使用
-
/
分隔符,我可以这样输入日期值:dd/mm/yyyyy,但是如果我输入的日期是day,它就可以正常工作,但是strotime理解的格式是
mm/dd/yyyyy
yyyyy/mm/dd
,请提供
$data['birthdate]的示例数据
。数据是如何输入的?使用
-
/
分隔符,我可以这样输入日期值:dd/mm/yyyyy,但如果我输入的日期是day,则可以正常工作,但strotime理解的格式是
mm/dd/yyyyy
yyyyy/mm/dd
,请参阅