首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中的日期格式之间转换

在PHP中的日期格式之间转换
EN

Stack Overflow用户
提问于 2013-09-06 20:19:53
回答 4查看 914关注 0票数 1

我有一个网站,需要用户输入一个日期,然后存储在MySQL数据库中。我希望用户输入m/d/yyyy格式的日期,并让系统将其转换为MySQL要求的Y-m-d格式。我认为这很简单,但我不能让它停止犯一个严重的错误,

我尝试过以下几种方法:

代码语言:javascript
复制
$date = new DateTime($this->vital_date);
$this->vital_date = $date->format('Y-m-d');

当用户输入9/6/2013时,2013-06-09将存储在MySQL表中。(请注意月份和日期的转置。

然后,我尝试了更老的、前对象的方式:

代码语言:javascript
复制
$date = strtotime($this->vital_date);
$this->vital_date = date('Y-m-d', $date);

这做了同样的事情--颠倒了月份和日期。

有没有人可以给我一些帮助,告诉我哪里做错了,或者我怎样才能更好地转化。

EN

回答 4

Stack Overflow用户

发布于 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()。

示例

代码语言:javascript
复制
$vital_date = "9/6/2013";
$date = DateTime::createFromFormat("m/d/Y", $vital_date);
echo $date->format('Y-m-d');
票数 3
EN

Stack Overflow用户

发布于 2013-09-06 20:24:49

对于非标准格式,应使用DateTime::createFromFormat

票数 1
EN

Stack Overflow用户

发布于 2013-09-06 20:25:12

您可以通过以下方式指定要提供数据的格式:

代码语言:javascript
复制
$date = DateTime::createFromFormat('j/n/Y', '9/6/2013');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18657752

复制
相关文章

相似问题

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