我有一个网站,需要用户输入一个日期,然后存储在MySQL数据库中。我希望用户输入m/d/yyyy格式的日期,并让系统将其转换为MySQL要求的Y-m-d格式。我认为这很简单,但我不能让它停止犯一个严重的错误,
我尝试过以下几种方法:
$date = new DateTime($this->vital_date);
$this->vital_date = $date->format('Y-m-d');当用户输入9/6/2013时,2013-06-09将存储在MySQL表中。(请注意月份和日期的转置。
然后,我尝试了更老的、前对象的方式:
$date = strtotime($this->vital_date);
$this->vital_date = date('Y-m-d', $date);这做了同样的事情--颠倒了月份和日期。
有没有人可以给我一些帮助,告诉我哪里做错了,或者我怎样才能更好地转化。
发布于 2013-09-06 20:24:56
您应该使用DateTime::createFromFormat
来自PHP DOC
通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的
日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。
为避免潜在的多义性,最好尽可能使用ISO8601 (YYYY-MM-DD)日期或::createFromFormat()。
示例
$vital_date = "9/6/2013";
$date = DateTime::createFromFormat("m/d/Y", $vital_date);
echo $date->format('Y-m-d');发布于 2013-09-06 20:24:49
对于非标准格式,应使用DateTime::createFromFormat
发布于 2013-09-06 20:25:12
您可以通过以下方式指定要提供数据的格式:
$date = DateTime::createFromFormat('j/n/Y', '9/6/2013');https://stackoverflow.com/questions/18657752
复制相似问题