上周的PHP输出日期在本地主机和服务器之间是不同的


Output of last week's date in PHP different between localhost and server

我想获得前一个星期一(上周)和上周结束(星期日),但是当代码在服务器上运行时,它与在本地主机上运行时不同。

这是我的代码:

$start_past = strtotime("last week"); 
$end_past = strtotime("+6 day",$start_past);
echo $start_past_qry = date("m/d/Y",$start_past);
echo $end_past_qry = date("m/d/Y",$end_past);

localhost的结果

  • 05/06/2013
  • 05/12/2013

服务器的结果

  • 05/13/2013
  • 05/19/2013

服务器上的结果似乎低于当前周。

From php manual

http://php.net/manual/en/function.strtotime.php

此函数的每个参数都使用默认时区,除非该参数中指定了时区。注意不要在每个参数中使用不同的时区,除非有意这样做。请参见date_default_timezone_get()了解定义默认时区的各种方法。

你需要定义默认时区,这可以通过函数

来完成

作用是()

支持时区列表

还要注意:

PHP 5.3.0之前,提供给strtotime()的time参数的相对时间格式,如本周、前一周、上周和下周,被解释为相对于当前日期/时间表示7天的周期,而不是星期一到星期日的一周周期。

查看strtotime函数手册以了解更多细节
$Current = Date('N');
$DaysToSunday = 7 - $Current; 
$DaysFromMonday = $Current - 1; 
$Sunday = Date('d/m/y', StrToTime("+ {$DaysToSunday} Days")) . "<br>"; 
$date = Date('Y/m/d', StrToTime("- {$DaysFromMonday} Days"));
$mod_date = strtotime($date."- 7 days");
echo $last_week_monday=date("Y/m/d",$mod_date) . "<br>";