PHP-通过给出2个日期每周显示天数

PHP-通过给出2个日期每周显示天数,php,Php,我想按周数显示两个日期之间的日期,如下例所示。这在PHP中可能吗 如果日期为2010-12-01至2010-12-19,则显示如下 week-1 2010-12-01 2010-12-02 2010-12-03 2010-12-04 2010-12-05 2010-12-06 2010-12-07 week-2 2010-12-08 2010-12-09 2010-12-10 2010-12-11 2010-12-1

我想按周数显示两个日期之间的日期,如下例所示。这在PHP中可能吗

如果日期为2010-12-01至2010-12-19,则显示如下

week-1  
 2010-12-01  
 2010-12-02  
 2010-12-03  
 2010-12-04  
 2010-12-05  
 2010-12-06  
 2010-12-07  
week-2    
 2010-12-08  
 2010-12-09  
 2010-12-10  
 2010-12-11  
 2010-12-12  
 2010-12-13  
 2010-12-14  
week-3  
 2010-12-15  
 2010-12-16  
 2010-12-17  
 2010-12-18  
 2010-12-19  
and so on...  
我使用mysql。它有startdate end enddate字段。 先谢谢你

我可以得到那些给出两个日期的人的周数,并使用

datediff('ww', '2010-12-01', '2010-12-19', false); I found on the internet.    
我可以显示两个日期之间的日期,如下所示。但我很难按周对它们进行分组

$sdate = "2010-12-01";
$edate = "2010-12-19";

$days = getDaysInBetween($sdate, $edate);
foreach ($days as $val)  
{  
echo $val;  
} 

function getDaysInBetween($start, $end) {   
// Vars   
$day = 86400; // Day in seconds   
$format = 'Y-m-d'; // Output format (see PHP date funciton)   
$sTime = strtotime($start); // Start as time   
$eTime = strtotime($end); // End as time   
$numDays = round(($eTime - $sTime) / $day) + 1;   
$days = array();   

// Get days   
for ($d = 0; $d < $numDays; $d++) {   
$days[] = date($format, ($sTime + ($d * $day)));   
}   

// Return days   
return $days;   
}
$sdate=“2010-12-01”;
$edate=“2010-12-19”;
$days=getDaysInBetween($sdate,$edate);
foreach(天数为$val)
{  
echo$val;
} 
函数getDaysInBetween($start,$end){
//瓦尔斯
$day=86400;//以秒为单位的天
$format='Y-m-d';//输出格式(请参见PHP日期函数)
$sTime=strotime($start);//按时间开始
$eTime=strottime($end);//以时间结束
$numDays=round($eTime-$sTime)/$day)+1;
$days=array();
//得到天
对于($d=0;$d<$numDays;$d++){
$days[]=日期($format,($sTime+($d*$day));
}   
//回归日
返回$days;
}

您肯定需要这个:。写一个forloop,每次递增一天。您还需要和函数作为。事实上,询问
日期('W',yourDateHere)
是个好主意

您将得到类似这样的结果(伪代码)

$startDate;
$endDate;
$nrOfDays=DateDiffindDays($endDate,$startDate);
$currentWeek=日期($W',$startDate);
对于($i=0;$i<$nrofday;$i++)
{
$newDay=date('+$i day',$startDate);//获取递增的日期
$newWeek=date('W',$newDay);//获取新一天的星期
if($newWeek!=$currentWeek)//检查是否必须打印新的一周,或者是否仍在当前
打印$newWeek;
打印$newDay;//打印日期
}

希望这有帮助。祝你好运。

你肯定需要这个:。写一个forloop,每次递增一天。您还需要和函数作为。事实上,询问
日期('W',yourDateHere)
是个好主意

您将得到类似这样的结果(伪代码)

$startDate;
$endDate;
$nrOfDays=DateDiffindDays($endDate,$startDate);
$currentWeek=日期($W',$startDate);
对于($i=0;$i<$nrofday;$i++)
{
$newDay=date('+$i day',$startDate);//获取递增的日期
$newWeek=date('W',$newDay);//获取新一天的星期
if($newWeek!=$currentWeek)//检查是否必须打印新的一周,或者是否仍在当前
打印$newWeek;
打印$newDay;//打印日期
}

希望这有帮助。祝你好运。

足够完成工作的工具:

  • ('2010-11-23')-从日期获取时间戳
  • (“+1天”,$someTimestamp)-获取第二天
  • ('W',$someTimestamp)-获取周数(如果您想按ISO周数分组)
  • ($orderedListOfSuccessiveDates,7)-分为七天一组(如果不想按ISO周数分组)

警告:永远不要在时间戳上增加86400天!当夏令时,这是打破一切的最简单方法。使用strotime函数或类。

足够完成此工作的工具:

  • ('2010-11-23')-从日期获取时间戳
  • (“+1天”,$someTimestamp)-获取第二天
  • ('W',$someTimestamp)-获取周数(如果您想按ISO周数分组)
  • ($orderedListOfSuccessiveDates,7)-分为七天一组(如果不想按ISO周数分组)
警告:永远不要在时间戳上增加86400天!当夏令时,这是打破一切的最简单方法。使用strotime函数或类。

新答案

$current_date = strtotime('2010-12-01');
$end_date = strtotime('2010-12-19');
$day_count = 0;
$current_week = null;
do {
    if ((int)($day_count / 7) + 1 != $current_week) {
        $current_week = (int)($day_count / 7) + 1;
        echo 'week-'.$current_week.'<br />';
    }
    echo date('Y-m-d', $current_date).'<br />';
    $current_date = strtotime('+1 day', $current_date);
    $day_count ++;
} while ($current_date <= $end_date);
$current_date=strotime('2010-12-01');
$end_date=strottime('2010-12-19');
$day_count=0;
$current_week=null;
做{
如果((int)($day\u count/7)+1!=$current\u week){
$current_week=(int)($day_count/7)+1;
回显“周-”.$current_week.
; } 回音日期('Y-m-d',$当前日期)。'; $current_date=strottime(“+1天”,$current_date); $day_count++; }而($current_date新答案

$current_date = strtotime('2010-12-01');
$end_date = strtotime('2010-12-19');
$day_count = 0;
$current_week = null;
do {
    if ((int)($day_count / 7) + 1 != $current_week) {
        $current_week = (int)($day_count / 7) + 1;
        echo 'week-'.$current_week.'<br />';
    }
    echo date('Y-m-d', $current_date).'<br />';
    $current_date = strtotime('+1 day', $current_date);
    $day_count ++;
} while ($current_date <= $end_date);
$current_date=strotime('2010-12-01');
$end_date=strottime('2010-12-19');
$day_count=0;
$current_week=null;
做{
如果((int)($day\u count/7)+1!=$current\u week){
$current_week=(int)($day_count/7)+1;
回显“周-”.$current_week.
; } 回音日期('Y-m-d',$当前日期)。'; $current_date=strottime(“+1天”,$current_date); $day_count++;
}while($current_date在这里。虽然这是从星期天开始的几周(如果需要的话,可以改为星期一)。如果日期不在同一年,这是不起作用的。但这应该很容易解决。如果不是同一年,那么

$start_date = mktime(0, 0, 0, 12, 01, 2010);
$start_date_week_number = (int) date("W", $start_date);
$end_date = mktime(0, 0, 0, 12, 19, 2010);
$end_date_week_number = (int) date("W", $end_date);
$n = $start_date_week_number;
$w = 1;
$date = $start_date;

while($n <= $end_date_week_number) {
    echo("<strong>Week " . $w . "</strong><br />");
    $s = 0;
    $e = 6;
    if($n == $start_date_week_number) $s = (int) date("w", $start_date);
    elseif($n == $end_date_week_number) $e = (int) date("w", $end_date);
    while($s <= $e) {
        echo(date("j-m-y", $date) . "<br />");
        $c_date = getdate($date);
        $date = mktime($c_date['hours'], $c_date['minutes'], $c_date['seconds'], $c_date['mon'], $c_date['mday'] + 1, $c_date['year']);
        $s++;
    }
    $n++; $w++;
}
$start_date=mktime(0,0,0,12,01,2010);
$start\u date\u week\u number=(int)date(“W”,即$start\u date);
$end_date=mktime(0,0,0,12,19,2010);
$end_date_week_number=(int)date(“W”,即$end_date);
$n=$start\u date\u week\u number;
$w=1;
$date=$start\u date;

虽然($n给你。虽然这是从星期天开始的几周(如果需要的话,可以改为星期一)。如果日期不在同一年,这是不起作用的。但是解决这个问题应该很容易。如果不是同一年的话

$start_date = mktime(0, 0, 0, 12, 01, 2010);
$start_date_week_number = (int) date("W", $start_date);
$end_date = mktime(0, 0, 0, 12, 19, 2010);
$end_date_week_number = (int) date("W", $end_date);
$n = $start_date_week_number;
$w = 1;
$date = $start_date;

while($n <= $end_date_week_number) {
    echo("<strong>Week " . $w . "</strong><br />");
    $s = 0;
    $e = 6;
    if($n == $start_date_week_number) $s = (int) date("w", $start_date);
    elseif($n == $end_date_week_number) $e = (int) date("w", $end_date);
    while($s <= $e) {
        echo(date("j-m-y", $date) . "<br />");
        $c_date = getdate($date);
        $date = mktime($c_date['hours'], $c_date['minutes'], $c_date['seconds'], $c_date['mon'], $c_date['mday'] + 1, $c_date['year']);
        $s++;
    }
    $n++; $w++;
}
$start_date=mktime(0,0,0,12,01,2010);
$start\u date\u week\u number=(int)date(“W”,即$start\u date);
$end_date=mktime(0,0,0,12,19,2010);
$end_date_week_number=(int)date(“W”,即$end_date);
$n=$start\u date\u week\u number;
$w=1;
$date=$start\u date;
而($n
$startDate=新日期时间($2010-01-01));
$endDate=新日期时间('2010-01-14');
$weeksDays=getWeeksDaysBetween($startDate,$endDate);
foreach($weeksDays作为$week=>$days)
{
echo“周$Week