PHP strtotime(最后一天)功能相关的问题

时间:2014-08-16 06:10:51

标签: php

我需要显示上周六20.00.01至下周六20.00.00的每周销售报告

我使用以下代码获得了当天的上周六和下周六的信息。

<?php
$dt_week_start_date = date('Y-m-d 20:00:01',strtotime("last Saturday")); 
$dt_week_end_date = date('Y-m-d 20:00:00',strtotime("next Saturday"));
?>

例如:现在服务器日期时间是星期五,2014-08-15 05:43:49然后下面的代码给出了正确的结果。

<?php print(date("d-M-Y H:i:s",strtotime($dt_week_start_date)));?> TO 
<?php print(date("d-M-Y H:i:s",strtotime($dt_week_end_date)));?>

Output: 09-Aug-2014 20:00:01 TO 16-Aug-2014 20:00:00

现在例如:现在服务器日期时间是星期六,2014-08-16 05:43:49然后下面的代码给我错误的结果。

<?php print(date("d-M-Y H:i:s",strtotime($dt_week_start_date)));?> TO 
<?php print(date("d-M-Y H:i:s",strtotime($dt_week_end_date)));?>

Output: 09-Aug-2014 20:00:01 TO 23-Aug-2014 20:00:00

所以现在是星期六,2014-08-16 05:43:49所以它比$ dt_week_end_date变量的值小(2014-08-16 20:00:00)所以它应显示2014年8月16日20:00:00而不是2014年8月23日20:00:00。

请告诉我我的代码有什么问题?提前谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个

<?php
$today = date('d-M-Y');
$today_time = strtotime($today);

$dt_week_start_time = strtotime("last saturday")+((20*3600)+ 1);
$dt_week_start_date = date('d-M-Y G:i:s', $dt_week_start_time);

$dt_week_end_time = $dt_week_start_time + (7*3600*24) - 1;
$dt_week_end_date = date('d-M-Y G:i:s', $dt_week_end_time);

echo "Today : ".$today;
echo "\n";
echo "Last Saturday : ".$dt_week_start_date;
echo "\n";
echo "Next Saturday : ".$dt_week_end_date;
?>

<强>输出:

Today : 16-Aug-2014
Last Saturday : 09-Aug-2014 20:00:01
Next Saturday : 16-Aug-2014 20:00:00

<强> Demo

答案 1 :(得分:0)

尝试以下内容

$dt_week_start_date = strtotime("last Saturday");
$from = date('d-M-Y 20:00:01', $dt_week_start_date);
$to = date('d-M-Y 20:00:01', $dt_week_start_date + (7  *24 * 60 * 60));
echo $from.' To '.$to;

<强>输出:

09-Aug-2014 20:00:01 To 16-Aug-2014 20:00:01