PHP的上周日期输出在localhost和server之间不同

时间:2013-05-15 10:37:56

标签: php strtotime

我希望获得上周一(上周)和上周末(周日),但是当代码在服务器上运行时,它与在localhost上运行的时间不同。

这是我的代码:

$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
  • 2013年5月12日

服务器上的结果

  • 2013年5月13日
  • 2013年5月19日

服务器上的结果似乎在本周下降。我想得到上周的范围。

2 个答案:

答案 0 :(得分:3)

来自php手册

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

  

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

您需要定义默认时区,可以通过功能

来完成

date_default_timezone_set()

List of supported Time Zones

还要注意:

  

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

请确保您拥有相同的php版本且至少为5.3.0检查manual of strtotime function以了解更多详情

答案 1 :(得分:2)

$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>";