使用phptime函数输出周数的函数

时间:2011-04-27 21:20:55

标签: php

28天组成四周对吗?好吧,我正在尝试编写一个基本上返回类似于week1,week2,week3,week4的函数.Week1基本上是从今天开始的前7天。但这是我能够走的。

function week() {
    $currentdate = time();
    $numberofdays = 28;
    for ($i=0; $i<$numberofdays; $i++) {
    }
}

3 个答案:

答案 0 :(得分:1)

那么,您是否想要保留所有日子,例如日历,或者只是生成每周开始的那一天?

如果你想要保持所有的日子,试试这个:

function week($days = 28) 
{
    //Note, I added the number of days to the function arguments, so that it can be variable without having to change the code
    if(!is_int($days) || $days <= 0)
    {
        return false;
    }

    $start = strtotime("midnight tonight");
    $currentweek = 1;
    $weeks = array();
    for ($i = 1; $i <= $days; $i++) 
    {
        $weeks[$currentweek][] = $start + ($i * 86400); 

        if(!(i % 7))
        {
            $currentweek++;
        }
    }

    return $weeks;
}

这应该返回一个时间戳数组,按周分组,从运行$days天数的午夜开始。如果您想要正确格式化日期,而不是将时间戳存储在数组中,请将date()函数的结果存储在时间戳上。

答案 1 :(得分:0)

请参阅此处的文档:

http://www.php.net/manual/en/function.time.php

我认为你指的是:

<?php
$nextWeek = time() + (7 * 24 * 60 * 60);
                   // 7 days; 24 hours; 60 mins; 60secs
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n";
// or using strtotime():
echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n";
?>

以上示例将输出类似于:

的内容
  

现在:2005-03-30下周:   2005-04-06下周:2005-04-06

答案 2 :(得分:0)

    /**
 * Returns the amount of weeks into the month a date is
 * @param $date a YYYY-MM-DD formatted date
 * @param $rollover The day on which the week rolls over
 */
function getWeeks($date, $rollover)
{
    $cut = substr($date, 0, 8);
    $daylen = 86400;

    $timestamp = strtotime($date);
    $first = strtotime($cut . "00");
    $elapsed = ($timestamp - $first) / $daylen;

    $i = 1;
    $weeks = 1;

    for($i; $i<=$elapsed; $i++)
    {
        $dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i);
        $daytimestamp = strtotime($dayfind);

        $day = strtolower(date("l", $daytimestamp));

        if($day == strtolower($rollover))  $weeks ++;
    }

    return $weeks;
}


$dateNow = date("Y-m-d");
echo getWeeks($dateNow, "monday");