首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >date()方法,“遇到格式不正确的数值”不想格式化传递到$_POST中的日期

date()方法,“遇到格式不正确的数值”不想格式化传递到$_POST中的日期
EN

Stack Overflow用户
提问于 2013-12-14 03:29:19
回答 1查看 113.7K关注 0票数 26

不幸的是,我不能使用DateTime(),因为这个项目所在的服务器运行的是PHPV5.2。

有问题的那一行:

代码语言:javascript
复制
$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']); 

抛出以下错误:

代码语言:javascript
复制
Notice: A non well formed numeric value encountered

因此,我使用var转储来确保它的格式正确。

代码语言:javascript
复制
var_dump($_POST['nextAppointmentDate']);  

string(10) "12-16-2013"

它接受时间戳而不是字符串的php docs state。但当我这么做的时候:

代码语言:javascript
复制
date('Y-m-d', strtotime($_POST['nextAppointmentDate']));

然后var_dump结果,我得到了这个:

代码语言:javascript
复制
string(10) "1969-12-31"

为什么不能使用此日期值和strtotime()格式化日期?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 03:32:23

来自strtotime()的文档

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的

日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。

在您的日期字符串中,有12-16-201316不是有效的月份,因此strtotime()返回false

由于您不能使用DateTime类,因此可以使用str_replace()手动将-替换为/,以便将日期字符串转换为strtotime()能够理解的格式:

代码语言:javascript
复制
$date = '2-16-2013';
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16
票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20574465

复制
相关文章

相似问题

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