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

使用phptime函数输出周数的函数,php,Php,28天等于4周,对吗?我正在写一个函数,它基本上返回像这样的东西,1周,2周,3周,4周。1周基本上是从今天开始的前7天。但这是我所能做到的 function week() { $currentdate = time(); $numberofdays = 28; for ($i=0; $i<$numberofdays; $i++) { } } 功能周(){ $currentdate=time(); $numberofdays=28; 有关($i=0;$i的

28天等于4周,对吗?我正在写一个函数,它基本上返回像这样的东西,1周,2周,3周,4周。1周基本上是从今天开始的前7天。但这是我所能做到的

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

有关($i=0;$i的信息,请参见此处的文档:

我想你指的是:

<?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


那么,您是想保留所有的日期,比如日历,还是仅仅生成每周开始的日期

如果你想让所有的日子都过得很好,试试这个:

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=28)
{
//注意,我在函数参数中添加了天数,因此它可以是可变的,而无需更改代码
如果(!is_int($days)|$days
/**
*返回日期所在月份的周数
*@param$date一个YYYY-MM-DD格式的日期
*@param$rollover本周结束的日期
*/
函数getWeeks($date,$rollover)
{
$cut=substr($date,0,8);
$daylen=86400;
$timestamp=strottime($date);
$first=strottime($cut.00”);
$passed=($timestamp-$first)/$daylen;
$i=1;
$weeks=1;

对于($i;$iif(i%7==0)echo“week:”.$j++;@Byron Whitlock,这不使用当前日期?请显示您希望该日期的确切输出是今天。您是否尝试返回当前日期所在的一周?如果恰好在DST切换时,这将中断。与使用时间戳进行日期计算时一样。
    /**
 * 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");