0

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

这是我的代码:

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

本地主机上的结果

  • 2013 年 5 月 6 日
  • 2013 年 5 月 12 日

服务器上的结果

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

服务器上的结果似乎低于本周。我想得到上周的范围。

4

2 回答 2

3

来自php手册

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

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

您需要定义可以通过函数完成的默认时区

date_default_timezone_set()

支持的时区列表

还要注意:

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

确保您有相同的 php 版本,并且至少是 5.3.0 查看strtotime 函数的手册以了解更多详细信息

于 2013-05-15T10:43:28.083 回答
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>";
于 2013-10-04T12:54:26.327 回答