2011-04-27 2 views
0

28 일이 4 주를 올바르게 구성합니까? 글쎄, 나는이 week1, week2, week3, week4..Week1과 같은 것을 반환하는 함수를 쓰려고 노력하고있다. 근본적으로 오늘부터 시작되는 처음 7 일이다. 그러나 이것은 제가 갈 수있는 한 있습니다. 난 당신이 같은 언급하는 생각phptime 함수를 사용하여 주 수를 출력하는 함수

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

:

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

if (i % 7 == 0) echo "week :". $ j ++; –

+0

@Byron Whitlock, 현재 날짜가 사용되지 않습니까? – seun

+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() 함수의 결과를 타임 스탬프에 저장하십시오.

0

여기에 설명서를 참조하십시오

<?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년 3월 30일 다음 주 : 2005년 4월 6일 다음 주 : 그래서 2005년 4월 6일

+0

DST 전환이 일어날 때가되면 우연히 중단됩니다. 항상 날짜 계산을 위해 타임 스탬프를 사용할 때와 마찬가지입니다. – AndreKR

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"); 
관련 문제