Выбор всего за неделю хх, не правильно работает php - PullRequest
0 голосов
/ 02 октября 2011

Хорошо, это то, что у меня есть:

function getFirstDayOfWeek($iYear, $iWeekNumber)
{
    if ( is_null($iYear) ) $iYear = date('Y');
    if ( $iWeekNumber < 10 ) $iWeekNumber = '0'.$iWeekNumber;

    $iTime = strtotime($iYear.'W'.$iWeekNumber);

    return $iTime;
}

$firstdayofweek = getFirstDayOfWeek($data['year'], $data['week']);
$mDate = date('m', $firstdayofweek);
$dDate = date('d', $firstdayofweek);
$min = mktime(0, 0, 0, $mDate, $dDate, $data['year']);
$max = mktime(23, 59, 59, $dDate, $dDate+6, $data['year']);

Где это будет позже:

SELECT id
FROM training_activities
WHERE date time >= {$min} 
  AND time <= {$max}

Как вы можете до сих пор, время сохраняется в метке времени Unix.*

Этот код не работает должным образом.

Допустим, $ data year - 2011 и неделя 39.

Это показывает, что даты 26 / 09-04 / 10, 8 дней,в то время как неделя 39 - 29/09 - 02/10

Как я могу выбрать и показать недели правильно?

1 Ответ

1 голос
/ 02 октября 2011

$max месяц использовал $dDate вместо $mDate;следующие работы:

<?php

function getFirstDayOfWeek($iYear, $iWeekNumber)
{
    if ( is_null($iYear) ) $iYear = date('Y');
    if ( $iWeekNumber < 10 ) $iWeekNumber = '0'.$iWeekNumber;

    $iTime = strtotime($iYear.'W'.$iWeekNumber);

    return $iTime;
}

for ($i = 1; $i <= 52; $i++) {
    $firstdayofweek = getFirstDayOfWeek(2011, $i);
    $mDate = date('m', $firstdayofweek);
    $dDate = date('d', $firstdayofweek);
    $min = mktime(0, 0, 0, $mDate, $dDate, 2011);
    $max = mktime(23, 59, 59, $mDate, ($dDate+6), 2011);
    echo date('m/d/Y',$min)." - ".date('m/d/Y',$max)." ($dDate - ".($dDate+6).")\n";
}

?>

http://codepad.org/7hMJQFhq

...