在php中的两个日期之间获取周数

时间:2013-04-16 12:41:27

标签: php

我想得到给定两个日期的周数,即从2012-01-01到2012-12-31。周数应该完全落在上面指定的范围内。可以请你提供这样做的建议。

5 个答案:

答案 0 :(得分:2)

这样的事应该可以正常工作:

<?php
    $startDateUnix = strtotime('2012-01-01');
    $endDateUnix = strtotime('2013-01-01');

    $currentDateUnix = $startDateUnix;

    $weekNumbers = array();
    while ($currentDateUnix < $endDateUnix) {
        $weekNumbers[] = date('W', $currentDateUnix);
        $currentDateUnix = strtotime('+1 week', $currentDateUnix);
    }

    print_r($weekNumbers);
?>

DEMO

<强>输出

Array
(
    [0] => 52
    [1] => 01
    [2] => 02
    .........
    [51] => 51
    [52] => 52
)

答案 1 :(得分:2)

我认为你想要使用DateTime这样的东西:

$first_date = new DateTime();
$last_date  = new DateTime('-50 weeks');
$days_array = array();
foreach(new DatePeriod($first_date, new DateInterval('P1D'), $last_date) as $date) {
  $days_array[] = $date->format('W');
}

答案 2 :(得分:1)

这样的事情应该可以胜任:

$start = '2012-01-01';
$end = '2012-12-31';

$dates = range(strtotime($start), strtotime($end),604800);
$weeks = array_map(function($v){return date('W', $v);}, $dates); // Requires PHP 5.3+

print_r($weeks);

答案 3 :(得分:0)

做这样的事情:

[REMOVED]

修改

<?php

for($w = strtotime($start_date); $w <= strtotime($end_date); $w += 7 * 24 * 3600)
{
echo date("W", $w) . '<br />';
}

?>

答案 4 :(得分:0)

您可以使用下面的week_between_dates()函数获取两个日期之间的周数。

function weeks_between_dates($d1,$d2)
{
    $t1 = strtotime($d1);
    $t2 = strtotime($d2);
    $out = array();
    while ($now <= $t2) {
        $out[] = date('W', $t1);
        $t1 = strtotime('+1 week', $t1);
    }
    return $out;
}

print_r( weeks_between_dates('2015-01-01','2015-12-31') ); // 01..53
print_r( weeks_between_dates('2016-01-01','2016-12-31') ); // 01..52