来自时间戳计算PHP的奇怪结果

时间:2016-04-12 02:34:44

标签: php time

我正在使用php时间戳来开发事件日历页面。

在“日历”页面上,我已经编写了一个函数来立即确定一些内容,例如:

  • 用户选择的月份(默认为当前时间戳的月份)
  • 当月的第一天(由此确定):
$first_of_month = strtotime(date('m',time()).'/01/'.date('Y',time()));

现在 - 使用该月的第一天,我必须确定当天之前的最近一个星期日(星期日从星期日开始),所以我通过它来运行:

date('m/d/Y--D-w',($first_of_month - (date('w',$first_of_month)*86400)))

问题是它没有返回我期望的东西。

目前我们已经在2016年4月。当运行日期(' w')格式时,4月1日将返回5。所以,从那个星期五开始的5天应该是第0天(星期日)。但我星期六到了。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

1小时的偏差会让你过夜(明天)吗?我建议您仔细检查服务器偏移量:date_default_timezone_get();

如果错误,请使用date_default_timezone_set('America/Los_Angeles')(明显取代'America / Los_Angeles'。php: date_default_timezone_set()

只要这是正确的,您可以使用$first_of_month上的strtotime()获取最后一个星期日:

date('m/d/Y--D-w' ,strtotime('last Sunday',$first_of_month));

答案 1 :(得分:1)

PHP日期字解析器功能非常强大。如果你正在寻找上个月的最后一个星期天,你可以问一下!

toggleDirection()

请在此处查看ideone:https://ideone.com/sWsxPW