2008-08-12 2 views
6

strtotime()을 사용하여 버튼 클릭에 응답하여 이전 클릭과 관련된 하루를 기준으로 -1 일과 +1 일 (두 개의 버튼)을 진행하려고합니다.strtotime()을 사용하여 상대 날짜로 이동하기

예 :

  • 그것은 달의 10 일, 난 클릭 "-1 일"버튼을, 지금 날짜가 9로 읽습니다.
  • "-1 일"버튼을 다시 클릭하면 이제 8 일째로 표시됩니다.
  • "+1 일"버튼을 클릭하면 이제 9 번째 값으로 표시됩니다.

가 나는 버튼과 정보를 전달하는 $_GET과 PHP를 사용하여 날짜를 표시하고, 이해하지만 어떻게 시간 여행 스크립트 호출 된 나는 strtotime()가 마지막에서 상대 날짜에 작업을 어떻게해야합니까?

내 작품은 지금까지 나를 예를 들어 상대 어제와 오늘 상대에 지금하지만, 어제, 또는 내일 후 일 전에 일를 표시 할 수 있습니다. 또는 "last monday" 버튼을 사용하는 경우 그 날 전날 또는 그 다음 날입니다.

답변

5

에서 하루를 후퇴 이런 종류의 일에 좋은 아이디어입니다.

원하는 작업은 항상 스크립트에 두 값, 날짜 및 동작을 전달하는 것입니다.

http://www.site.com/addOneDay.php?date=1999-12-31

<?php 
    echo Date("Y-m-d",(strtoTime($_GET[date])+86400)); 
?> 

당신이 있는지 확인해야합니다 있습니다 (아래 예는 사용자가 날짜 만 통과 할 수 있도록 단순화하고, 항상 한 하루 추가합니다) 그 이전에 isset ($ _ GET [날짜])도 같이 사용합니다.

이전에 동일한 스크립트를 호출 한 상태에서 작업하려면 세션별로 수행해야합니다. .

+0

좋은 답변이지만 따옴표 $ _GET [ 'date']을 잊지 마세요. – Tech4Wilco

1

Kevin, 상대적인 시간이 아닌 단단한 절대 기초 (즉 날짜/시간)를 사용합니다. 그런 다음 상대 시간으로 변환합니다. 예를 들어 기본적으로 캘린더를 표시하는 경우 오늘부터 작업하게됩니다. 당신은 여기에 한 strtotime의 함수 정의에서 볼 수

int strtotime (string $time [, int $now ]) 

는 두 번째 인수는 당신이 상대의있는 날짜를 변경할 수 있습니다 즉, 지금이다.

이 첫 번째 인수로 "어제"를 사용하여 지난 10 일을 통해 빠른 루프

이 의지 루프를 통해 표시 할 쉽게 수 있습니다. 그런 다음 날짜를 사용하여 인쇄합니다.

$time = time(); 

for ($i = 0; $i < 10; $i++) { 
    $time = strtotime("yesterday", $time); 
    print date("r", $time) . "\n"; 
} 

그래서 상대 날짜를 저장할 수 있도록 URI를 통해 시간/날짜를 전달하십시오.

0

영감을 얻은 순간, 내 질문에 대한 해결책이 나에게 분명 해졌다 (나는 자전거를 타고 있었다).

strtottime(string $time {,int $now ]) 

의 '지금 당장'부분을 현재 날짜로 설정해야합니다. "$ time() - now"가 아니라 "현재 염두에 둔 날짜/내 로그를보고 있습니다.

예 : 8/10/15에 대한 작업 표 요약을보고있는 경우, 2008 년, strtotime()에 따르면 "now", 어제는 8/09, 내일은 8/11입니다. 하루가 지나면 "now"는 8/11, 어제는 8/10, 내일은 8/12.여기

는 코드 예제 :

<?php 

//catch variable 
$givendate=$_GET['given']; 

//convert given date to unix timestamp 
$date=strtotime($givendate); 
echo "Date Set As...: ".date('m/d/Y',$date)."<br />"; 

//use given date to show day before 
$yesterday=strtotime('-1 day',$date); 
echo "Day Before: ".date('m/d/Y',$yesterday)."<br />"; 

//same for next day 
$tomorrow=strtotime('+1 day',$date); 
echo "Next Day: ".date('m/d/Y',$tomorrow)."<br />"; 
$lastmonday=strtotime('last monday, 1 week ago',$date); 
echo "Last Moday: ".date('D m/d/Y',$lastmonday)."<br />"; 

//form 
echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">"; 

//link to subtract a day 
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$yesterday)."\"><< </a>"; 

//show current day 
echo "<input type=\"text\" name=\"given\" value=\"$givendate\">"; 

//link to add a day 
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$tomorrow)."\"> >></a><br />"; 

//submit manually entered day 
echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">"; 

//close form 
echo "<form><br />"; 
?> 

은 "< <"을 클릭하고 ">>"발전과 같은 스크립트가 아닌 이전의 통화에서 근무 질문