首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP strtotime行为

PHP strtotime行为
EN

Stack Overflow用户
提问于 2015-05-29 18:42:28
回答 1查看 257关注 0票数 3

以下代码行在两个不同的服务器A和B上返回两个不同的输出:

代码语言:javascript
复制
echo date("M Y", strtotime("2015-01"));
echo date("M Y", strtotime("2015-02"));

预期输出为“2015年1月”和“2015年2月”,这在服务器A上是正确的。

但是服务器B上的相同代码返回“2015年1月”和“2015年3月”的输出。

调试时,我发现服务器B上的strtotime函数总是返回每月当前日期(今天是第29天)的时间戳,这解释了为什么"2015-02“显示为”2015年3月“(因为没有2015年2月29日)。昨天,这段代码在两台服务器上返回相同的输出,因为2月28日是有效的,并被正确地转换到2015年2月。

从本质上说,在服务器A上,有效的代码是

代码语言:javascript
复制
 echo date("M Y", strtotime("2015-01-01"));
 echo date("M Y", strtotime("2015-02-01"));

在服务器B上,有效代码是

代码语言:javascript
复制
echo date("M Y", strtotime("2015-01-29")); //or, strtotime("2015-01-[current day]")
echo date("M Y", strtotime("2015-02-29"));

为什么这两个服务器之间会有这样的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 18:56:22

这是不同版本的php的问题。在php5.2.7中有一个来自文档的BC

在5.2.7之前的PHP 5中,如果在一个月中某个工作日是该月的第一天,请求一个给定工作日的给定事件,将错误地将一个星期添加到返回的时间戳中。这一点已在5.2.7和更高版本中得到纠正。

演示

服务器A的PHP > 5.2.7,服务器B的PHP < 5.2.7。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30536853

复制
相关文章

相似问题

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