두 PHP datetime 개체가 동일한 날짜로 설정되었는지 확인합니다(시간 무시).
2개의 datetime 객체를 비교하여 동일한 날짜로 설정되었는지 확인하고 싶지만 객체의 시간 구성 요소는 상관 없습니다.현재 date_format 명령어를 사용하여 'Y-m-d'와 같은 문자열을 추출하여 비교하고 있지만, 이는 어색해 보입니다.
$firstDate = date_format($firstDateTimeObj, 'Y-m-d');
$secondDate = date_format($secondDateTimeObj, 'Y-m-d');
if !($firstDate == $secondDate) {
// some code
}
저는 프로그래밍과 PHP에 익숙하지 않아서 어떤 포인터든 감사합니다.
개체 구문을 사용합니다!
$firstDate = $firstDateTimeObj->format('Y-m-d');
$secondDate = $secondDateTimeObj->format('Y-m-d');
if 식과 매우 가까웠지만 ! 연산자가 괄호 안에 있어야 합니다.
if (!($firstDate == $secondDate))
이는 다음과 같이 표현할 수도 있습니다.
if ($firstDate != $secondDate)
첫 번째 답변이 완전히 틀려서 새로 시작합니다.
다른 답변에서 볼 수 있듯이 가장 간단한 방법은 다음과 같습니다.date_format
이것이 거의 확실하게 가야 할 길입니다.그러나 DateTime 클래스의 전체 파워를 활용하는 다른 방법이 있습니다. 사용diff
를 생성하기 위해DateInterval
인스턴스를 확인합니다.d
속성: 만약 그렇다면0
같은 날입니다.
// procedural
$diff = date_diff($firstDateTimeObj, $secondDateTimeObj);
// object-oriented
$diff = $firstDateTimeObj->diff($secondDateTimeObj);
if ($diff->format('%a') === '0') {
// do stuff
} else {
// do other stuff
}
이 경우에는 거의 확실하게 오버킬이지만 나중에 더 복잡한 작업을 수행하려면 유용한 기술이 될 수 있습니다.
동일한 문제가 있는 답을 검색하는 중입니다.저는 다른 방법을 사용하는 것보다 저에게 더 나은 솔루션에 도달했습니다.
주요 문제는 DateTime 개체의 시간 부분을 무시하는 것입니다. 시간으로 설정하십시오(예: 12:00:00).
$firstDateTimeObj->setTime(12, 0, 0);
$secondDateTimeObj->setTime(12, 0, 0);
// The main problem was checking if different.. but you can use any comparison
if ($firstDateTimeObj != $secondDateTimeObj) {
}
저는 당신의 접근 방식이 좋다고 생각하지만, 저는 그것을 제거할 것입니다.-
그들이 아무것도 추가하지 않기 때문에.
$firstDate = date_format($firstDateTimeObj, 'Ymd');
$secondDate = date_format($secondDateTimeObj, 'Ymd');
if ($firstDate != $secondDate) {
// some code
}
이것은 저에게 아주 효과적이었습니다.
$date1=DateTime::createFromFormat('Y-m-d H:i:s', '2014-07-31 07:30:00')->format('Y-m-d');
$date2=DateTime::createFromFormat('Y-m-d H:i:s', '2014-08-01 17:30:00')->format('Y-m-d');
if($date1==$date2){
echo "==";
}else{
echo "!=";
}
여기서 같은 질문을 찾다가 다른 방법을 생각해냈습니다.상당히 간결하게:
$diff = date_diff($date1,$date2);
if ($diff->days == '0') {
/* it's the same date */
}
먼저 date_diff를 사용하여 date_interval 개체를 가져옵니다.date_interval 개체에는 두 날짜 사이의 총 일 수를 가져오는 데 사용할 수 있는 'days' 속성이 있습니다.
저는 오늘 등록 날짜와 비교하고 회원이 된 지 얼마나 되었는지에 따라 특정 시간 간격으로 이메일을 보내는 데 사용하고 있습니다.
strtime 텍스트 날짜를 유닉스 타임스탬프로 변환합니다. http://fr.php.net/manual/en/function.strtotime.php
$first = strtotime(date_format($firstDateTimeObj, 'Y-m-d'));
$second = strtotime(date_format($secondDateTimeObj, 'Y-m-d'));
if ($first != $second) {
// some code
}
그리고 다음과 같습니다.
if ($first > $second) {
// some code
}
if ($first < $second) {
// some code
}
$first = strtotime(date_format($firstDateTimeObj, 'Y-m-d'));
$second = strtotime(date_format($secondDateTimeObj, 'Y-m-d'));
if ($first != $second) {
// some code
}
빠르고 더럽고, 원하는 날짜만큼 재사용 가능하며, 여전히 조정이 필요할 수 있습니다.
업데이트: 덜 더럽습니다.
if(sameDate($firstDateTimeObj, $secondDateTimeObj, $ThirdDateTimeObj))
{
// your code
}
function sameDate (DateTime ...$dates) {
foreach($dates as $date)
{
$test[] = $date->format('Ymd');
}
$result = array_unique($test);
if(count($result) == 1)
{
return true;
{
return false;
}
이니셜라이즈 aDateTime
를 하고 을 " 하고시설정니합다을간반대다니설합"로 합니다.00:00:00
그런 다음 시간을 무시한 날짜 간 비교를 사용할 수 있습니다.
$today = \DateTime::createFromFormat('d/m/Y H:i:s', '21/08/2014 00:00:00');
$tomorrow = \DateTime::createFromFormat('d/m/Y H:i:s', '22/08/2014 00:00:00');
// now you can compare them just with dates
var_dump($today < $tomorrow); //true
var_dump($today === $tomorrow); //false
var_dump($today !== $tomorrow); //true
@에버트의 대답은 잘 작동하지만, 그것을 변형시키는 것은 정말 잘못된 것처럼 보입니다.DateTime
개체를 문자열로 만든 다음 비교합니다.
언급URL : https://stackoverflow.com/questions/8328416/check-if-two-php-datetime-objects-are-set-to-the-same-date-ignoring-time
'source' 카테고리의 다른 글
수동으로 npm 취약성을 수정하는 방법은 무엇입니까? (0) | 2023.08.26 |
---|---|
부트스트랩: 모달에서 다른 모달 열기 (0) | 2023.08.26 |
VBA의 합계 함수 (0) | 2023.08.26 |
PhotoPicker 검색 오류: 오류 도메인=PlugInKit 코드=13 (0) | 2023.08.26 |
dbms_dll.get_ddl이 작동하지 않습니다. (0) | 2023.08.26 |