Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转换;m/d/y“;从表单文本输入字段到mysql日期时间的日期;友好的;输入?_Php_Datetime_Strtotime - Fatal编程技术网

Php 转换;m/d/y“;从表单文本输入字段到mysql日期时间的日期;友好的;输入?

Php 转换;m/d/y“;从表单文本输入字段到mysql日期时间的日期;友好的;输入?,php,datetime,strtotime,Php,Datetime,Strtotime,所以我有个问题。正在尝试将表单文本输入字段(格式如下:08/06/2013)的输入转换为可插入mysql datetime列的值 我试过这个 $startdate_timestamp = strtotime($this->startdate); // $this->startdate is the value from the input field $this->startdate = date("YYYY-MM-DD HH:MM:SS",$startdate_timest

所以我有个问题。正在尝试将表单文本输入字段(格式如下:08/06/2013)的输入转换为可插入mysql datetime列的值

我试过这个

$startdate_timestamp = strtotime($this->startdate); 
// $this->startdate is the value from the input field
$this->startdate = date("YYYY-MM-DD HH:MM:SS",$startdate_timestamp);
但它似乎什么也没做。除此之外,还有其他办法可以奏效吗?我使用的是Yii框架,所以这就是代码看起来很奇怪的原因:)

strotime()
很聪明,但它不是灵媒或天才,当它出错时,它会出错。不要使用它,尤其是对于模棱两可的格式,如
m/d/y
。不能保证它不会被视为
d/m/y

改为使用,这样可以显式指定输入格式。这要可靠得多,因为您可以控制
d
m
部分的处理方式:

$ts = date_create_from_format('m/d/Y', '08/06/2013');
$start_date = $ts->format('Y-m-d H:i:s');
strotime()
是聪明的,但它不是灵媒或天才,当它搞砸了,它就搞砸了。不要使用它,尤其是对于模棱两可的格式,如
m/d/y
。不能保证它不会被视为
d/m/y

改为使用,这样可以显式指定输入格式。这要可靠得多,因为您可以控制
d
m
部分的处理方式:

$ts = date_create_from_format('m/d/Y', '08/06/2013');
$start_date = $ts->format('Y-m-d H:i:s');
这将使其采用与MYSQL兼容的YYYY-MM-DD HH:MM:SS格式



这将使其采用与MYSQL兼容的YYYY-MM-DD HH:MM:SS格式。

在插入时使用MYSQL查询超级功能执行此操作。PHP日期函数是一个PITA:插入到FOO(日期字段)值中(日期格式($this->startdate,“%Y%M%D”);希望有帮助

在插入时使用MySQL查询超级功能执行此操作。PHP日期函数是一个PITA:插入到FOO(日期字段)值中(日期格式($this->startdate,“%Y%M%D”);希望有帮助

这个代码看起来和我的完全一样,只是放在一行:)几乎没有。。。我使用了正确的格式结构
Y-m-dh:I:s
。此代码看起来与我的代码完全相同,只是放在一行:)几乎。。。我使用了正确的格式结构
Y-m-dh:I:s
。注意
date\u create\u from\u format
返回一个
DateTime
对象,而不是时间戳。您的注释和DevlshOnes一样非常有用,所以我不知道选择哪一个作为解决方案:),这也意味着第二行:
$this->startdate=date(“Y-m-d H:i:s”,$startdate_timestamp);
将失败,因为
日期()
命令只接受一个时间戳。所以,对这个答案投赞成票的人并没有很好地注意。@Novica89您是否尝试过用这行代码替换第一行代码?这将告诉您要接受哪个答案。还没有尝试过使用datetime对象,但我确信它也能起作用。我使用了Devil请注意,
date\u create\u from\u format
返回的是一个
DateTime
对象,而不是时间戳。您的评论和DevlshOnes一样非常有用,所以我不知道选择哪一个作为解决方案:)这也意味着第二行:
$this->startdate=date(“Y-m-dh:I:s“,$startdate\u时间戳”将失败,因为
date()
命令只接受时间戳。所以,对这个答案投赞成票的人并没有很好地注意。@Novica89您是否尝试过用这行代码来代替第一行代码?我还没有尝试过使用datetime对象,但我相信它也能起作用。我对日期格式使用了Devils quick fix,它确实有效。因为我使用的是Yii,他负责表单的查询,我需要在保存表单之前处理它:)明白了。然后这样做,因为我使用Yii,他负责表单的查询,我需要在保存表单之前处理它:)明白了。执行此操作后,首先,如果您阅读了
date
命令的格式结构,您将看到YYYY-MM-DD HH:MM:SS不是有效的输出格式。您是正确的:)它开始使用日期格式替换。首先,如果您阅读了
date
命令的格式结构,您将看到YYYY-MM-DD HH:MM:SS不是有效的输出格式。您是正确的:)它开始使用日期格式替换。