PHP DateTime 비교 종료 날짜를 번역하면 다음과 같습니다.
P粉920835423
2023-07-31 15:48:47
<p>오늘 날짜 시간을 데이터베이스의 마감일과 비교하여 버튼을 비활성화하려고 하는데 문제가 있습니다. 조건을 만들었지만 1일 기한에는 작동하지 않습니다. 예: 2023-07-31 00:00:00 vs. 2023-07-31 00:00:00. <br /><br />제가 시도한 코드는 다음과 같습니다. </p><p><br /></p>
<pre class="brush:php;toolbar:false;">// 변수
// $request_project->start_date (사용자가 정의한 날짜/시간 데이터 유형의 시작 날짜 포함)
// $request_project->end_date (사용자가 정의한 날짜/시간 데이터 유형의 마감일 포함)
$startDate = new DateTime($request_project->start_date);
$endDate = new DateTime($request_project->end_date);
$startDateTime = 날짜('월-일') ' 00-00-00';
$endDateTime = 날짜('월-일') ' 23-59-59';
$startDateString = $startDate->format('Y-m-d H:i:s');
$endDateString = $endDate->format('Y-m-d H:i:s');</pre>
<p>그래서 사용자가 정의한 마감일이 오늘 날짜 시간보다 작거나 같은지 비교하고 싶습니다. 그렇다면 버튼이 활성화되고 btn-primary 클래스를 가지며, 그렇지 않으면 비활성화된 속성이 추가되고 btn-primary btn -secondary로 변경됩니다. </p>
<pre class="brush:php;toolbar:false;"><?php if($endDateString <= $endDateTime) {?>
<a href="#" class="btn btn-primary btn-hover w-100 mt-2"
onclick="doSomething()">지금 신청 <i class="uil uil-arrow-right"></i></a>
<?php } else { ?>
<a href="#" class="btn btn-secondary btn-hover w-100 mt-2 비활성화됨"
onclick="doSomething()">지금 신청하기 <i class="uil uil-arrow-right">
</i></a>
<?php } ?>
<a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2
북마크" id="<?=$request_project->id?>"><i class="uil uil-bookmark">
</i> 북마크 추가</a></pre>
<p>else 코드 블록을 실행하는 대신 end_date가 만료된 경우에도 항상 if 코드 블록을 실행합니다. </p>
당신이 겪고 있는 딜레마는 종료 날짜를 현재 날짜-시간과 비교하는 방법과 관련이 있는 것 같습니다. 문제는 date() 함수를 사용하여 $endDateTime 변수를 구성하는 방식에 있습니다.
코드에서 date() 형식으로 'Y-m-d'를 사용하는데, 이는 시간 없이 연, 월, 일만 포함한다는 의미입니다. 그런 다음 '23-59-59'를 날짜에 연결하여 날짜/시간 형식이 잘못되었습니다.
이 문제를 해결하려면 비교하기 전에 전체 시간(시, 분, 초)을 올바른 형식으로 포함하도록 $endDateTime 변수를 수정해야 합니다. 다음과 같이 'Y-m-d H:i:s' 형식의 date() 함수를 사용하여 이 작업을 수행할 수 있습니다.
으아아아이제 $endDateTime은 올바른 형식을 가지며 비교는 예상대로 작동합니다.
업데이트된 코드는 다음과 같습니다.
으아아아이 조정을 통해 이제 종료 날짜가 오늘 날짜 이후일 때 코드가 버튼을 올바르게 비활성화해야 합니다.