2012-05-10 5 views
-1

나는 날짜를 comapre에 약간의 코드를 쓴다. 문제는 내가 2012/mar/23으로 출력 할 때 약간의 시간을 정정하고, 어떤 때는 wrong.when으로 날짜를 입력 할 때이다./23 출력을 제공 할 때도 있습니다. 때때로 문제가 생깁니다.이 문제를 해결할 수 있습니까?날짜 비교

<?php 
    $month = 2; 
    $year = 2012; 
    $saturday = strtotime('First Saturday '.date('F o', mktime(0,0,0, $month, 1, $year))); 
    echo date('Y/M/d', $saturday); 
    $sat1 = strtotime($saturday); 
    echo "<br/>"; 
    $season1 = strtotime ('+12 week' , $saturday); 
    $season2= date ('Y/M/d' , $season1); 
    echo $season2; 
    $season = strtotime($season1); 
    echo "<br/>"; 
    $date = $_POST["date"]; 
    echo $date; 
    $date1 = strtotime($date); 
    echo "<br/>"; 
    $abc = strtotime ('+1 week' , $season1); 
    $abc = date ('Y/M/d', $abc); 
    echo "<br/>"; 
    echo $abc; 
    $abc1 = strtotime($abc); 
    if ($date1 <= $abc1) 
    { 
     if ($date1 <= $season) 
     { 
      echo "League already opened"; 
     } 
     else if($date1 > $season) 
     { 
     echo "league successfully closed"; 
     } 
    } 
    else 
    { 
     echo "league 1 closed"; 
    } 
    if(!isset($POST['submit'])) { 
?> 
    <form method="post" action=" "> 
     <label>enter date in YYYY/MM/DD format</label> 
     <input type="text" name="date" size="10" /> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
<? 
    } 
?> 

출력에 그 condition.before가 strtotime으로는 "Y/M/D"이것은 단지 지원

를 지원하지 않는

+2

코드를 들여 쓰기해야합니다! – ThiefMaster

+0

누구든지 위의 코드에 대한 해결책을 말할 수 있습니까? .thanks in advance – leela

답변

2

시도를 위해 화면에 출력하고자 같은 :

$date = DateTime::createFromFormat('Y/m/d', '2012/03/23'); 
echo $date->format('Y/m/d'); 

또는 같은

:

$date = DateTime::createFromFormat('Y/M/d', '2012/Mar/23'); 
echo $date->format('Y/m/d'); 
+0

대단히 - 날짜에 대해 알지 못합니다 - 매일 새로운 것을 배우십시오 :) +1 – Laurence

+0

좋아요, 날짜 문제가 해결되었습니다. 어떤 조건이 msg에 대해 해결 되었습니까? – leela

+0

양식을 제출하기 전에 나타나는 이유, 날짜 문제가 해결되었으므로 양식을 제출하기 전에 if 조건 메시지를 표시하는 이유는 무엇입니까? – leela

0

양식을 제출하는 경우에 MSG를 나타낸다 "Y/m/d "(소문자 m 참고) strtotime이 지원하는 형식의

Click here for a list.

그래서 당신은 당신의 논리에 대한 데이터 형식 "Y는/m/d를"을 가지고 있어야하고, 마찬가지로 디스플레이 형식을 "Y/M/D"사용자

+0

나는 무엇을 말했는지 이해하지 못했습니까? 내 코드에서 필요한 변경 작업을 수행 할 수 있습니까? – leela

+1

아니요 - 2 분을 보내고 내 대답을 다시 읽은 다음 코드를 살펴보십시오. 형식은 "Y/M/d"이며 "2012/5 월/10"입니다. strtotext를 통해 변환 할 수 없습니다. "Y/m/d"는 "2012/05/10"로만 변환 할 수 있습니다. "Y/m/d"만 사용하도록 백엔드 코드를 변경하거나 문제를 해결하는 데 도움이 될 Vyautas가 게시 한 답변을 사용할 수 있습니다 – Laurence

1

코드 date('Y/M/d') 형식에서 주요 문제이다. 그것에 대한 빈 타임 스탬프를 반환하고 잘못된 대답을 생성하기 때문에. 그래서 strtotime에 Y/m/d 형식을 사용하십시오.

1.Don't 사용 Y/M/D 형식을 조작 :

감사

0

은 문제가이 단계에 따라 해결합니다. Y-m-d 형식 만 사용하십시오.

2. "첫 번째 토요일"은 주어진 날짜로부터 계산됩니다. 주어진 날짜가 이미 토요일 일 경우, 다음 날짜가 계산됩니다. 당신이 토요일 strtotime()를 원하는 경우, 왜 다시 당신이 변환하는

3.You는 표현 계층에서, 또 다시 그 운문 strtotime()date() 기능 주위에

4.Use Y/M은/d의 형식을 지불하다 날짜 형식으로?

간단히 말하자면, 더 명확하게 말하면 표현과 조작을 구분하십시오. 이것은 한 번에 두 가지 일을하기 때문에 일어납니다.