如何在任何给定的日期在本周获得周末日?

问题描述:

例如,得到今天的周末。如何在任何给定的日期在本周获得周末日?

+3

你应该提供更多的细节 - 你想要的*后落在*给定日期或之前* *在指定日期的周末?给定星期日时它应该如何表现? – 2011-01-11 07:32:31

+0

http://bytes.com/topic/db2/answers/183442-weekend-date-given-date这将帮助你继续前进 – Egalitarian 2011-01-11 07:33:35

+0

@Jon Skeet:我甚至都无法想象你甚至会输入这样的问题:-) – zerkms 2011-01-11 07:34:03

如果您正在寻找如下一个或上一个星期六(或任何其他工作日)strtotime是你的朋友。

$prev = strtotime('-1 saturday');  
$next = strtotime('saturday'); 

var_dump($prev, $next); 

值得一提的是,strtotime是相当昂贵的功能,所以多个计算将noticiably添加到您的执行时间。一个很好的折衷办法是使用它来获取起点,并使用其他date functions来推导更多日期。

get the current date. 
get the current day of week. (0=monday, 6 = sunday) 
days2weekend = 5 - current day of week 
dateadd(currentdate, days, days2weekend) 

你的问题有点难以遵循,但你的意思是从某个日期开始的“下个周末”?

你可以得到星期几的数字,然后看星期六和日期添加多少?这看起来像:

<?php 
    $dayNR = date('N');   //monday = 1, tuesday = 2, etc. 
    $satDiff = 6-$dayNR;  //for monday we need to add 5 days -> 6 - 1 
    $sunDiff = $satDiff+1;  //sunday is one day more 
    $satDate = date("Y-m-d", strtotime(" +".$satDiff." days")); 
    $sunDate = date("Y-m-d", strtotime(" +".$sunDiff." days")); 

    echo $satDate."\n"; 
    echo $sunDate."\n"; 
?> 

这是PHP精辟简单:

<?php 

echo date('Y-m-d', strtotime('next Saturday')); 

?> 

我觉得内置的PHP函数的strtotime应该为你工作。例如:

strtotime('next saturday') 

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