$start_date
가 있다면
그리고
$end_date
, 사용자가 제공 한 날짜가 해당 범위 내에 있는지 어떻게 확인할 수 있습니까?
예 :
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
날짜가 문자열 인 순간, 타임 스탬프 정수로 변환하는 데 도움이 되겠습니까?
- 답변 # 1
- 답변 # 2
문자열이 'YYYY-MM-DD'표준 형식의 날짜로 확인되는 경우 비교를 위해 타임 스탬프로 변환 할 필요가 없습니다.
이 테스트는 작동합니다 :
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
제공 :
$start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28';
참고 : 이와 같은 문자열을 비교하면 "유효하지 않은"날짜가 허용됩니다 (예 : (12 월 32 일) '2009-13-32'및 이상한 형식의 문자열 '2009/3/3'의 경우 문자열 비교는 날짜 또는 타임 스탬프 비교와 동일하지 않습니다. 문자열의 날짜 값이일정한및캐 나니 컬형식 인 경우에만 작동합니다.
수정을 클릭하여 여기에 메모를 추가하고 명백한 내용을 자세히 설명하십시오.
일관성으로 비교할 문자열은 동일한 형식이어야합니다. 월은 항상 2 자, 하루는 항상 2 자, 구분자 문자는 항상 대시가 되십시오. 4 문자 연도, 2 문자 월, 2 문자 일이 아닌 "문자열"을 안정적으로 비교할 수 없습니다. 예를 들어 문자열에 한 문자와 두 문자 개월이 혼합되어 있으면
'2009-9-30'
를 비교할 때 예기치 않은 결과가 발생합니다.'2009-10-11'
로 . 우리는 인간적으로 "9"가 "10"보다 작은 것으로 보지만, 문자열 비교는'2009-9'
를 볼 것입니다'2009-1'
보다 큰 . 반드시 대시 구분 기호 문자가 필요하지는 않습니다. 우리는'YYYYMMDD'
에서 문자열을 안정적으로 비교할 수 있습니다. 체재;구분 문자가있는 경우 항상 있어야하며 항상 동일해야합니다.CANONICAL으로, 문자열이 날짜 순서로 정렬되는 형식을 의미합니다. 즉, 문자열은 "year", "month", "day"로 표시됩니다. 우리는
'MM-DD-YYYY'
에서 문자열을 안정적으로 비교할 수 없습니다 형식이 아니기 때문에 형식이 아닙니다. 문자열 비교는MM
를 비교합니다YYYY
를 비교하기 전 (개월) 문자열 비교는 왼쪽에서 오른쪽으로 작동하기 때문에 (연도). 'YYYY-MM-DD'문자열 형식의 큰 장점은 정식이라는 것입니다. 이 형식으로 표시된 날짜는 문자열로 확실하게 비교할 수 있습니다.[ADDENDUM]
php 타임 스탬프 변환을하려면 제한 사항에주의하십시오.
일부 플랫폼에서 php는 1970-01-01 이전 및/또는 2038-01-19 이후의 타임 스탬프 값을 지원하지 않습니다. (이것이 유닉스 타임 스탬프 32 비트 정수의 본질입니다.) 이후 버전 pf php (5.3?)는 그 문제를 해결해야합니다.
문자열에서 타임 스탬프로, 타임 스탬프에서 다시 문자열로 변환 할 때 동일한 시간대를 사용하지 않으면 시간대도 문제가 될 수 있습니다.
HTH
- 답변 # 3
PHP 5.3 이상인 경우 DateTime 클래스를 사용하십시오. 사용하기 쉽고 기능이 향상되었습니다.
DateTime은 내부적으로 시간대를 지원하며 다른 솔루션을 사용하면이를 처리 할 수 있습니다.
<?php /** * @param DateTime $date Date that is to be checked if it falls between $startDate and $endDate * @param DateTime $startDate Date should be after this date to return true * @param DateTime $endDate Date should be before this date to return true * return bool */ function isDateBetweenDates(DateTime $date, DateTime $startDate, DateTime $endDate) { return $date > $startDate && $date < $endDate; } $fromUser = new DateTime("2012-03-01"); $startDate = new DateTime("2012-02-01 00:00:00"); $endDate = new DateTime("2012-04-30 23:59:59"); echo isDateBetweenDates($fromUser, $startDate, $endDate);
- 답변 # 4
$startDatedt = strtotime($start_date) $endDatedt = strtotime($end_date) $usrDatedt = strtotime($date_from_user) if( $usrDatedt >= $startDatedt && $usrDatedt <= $endDatedt) { //..falls within range }
- 답변 # 5
두 날짜를 타임 스탬프로 변환 한 다음 수행하십시오
의사 코드 :
if date_from_user > start_date && date_from_user < end_date return true
관련 자료
- php - 숫자가 주어진 범위에 속하는지 확인하는 방법
- python - 주어진 범위에서 "n"개의 고유 한 난수 목록 가져 오기
- javascript - 배열 만 사용하여 지정된 방사성 내부의 점 확인
- java - 주어진 범위와 0 사이의 숫자 생성
- r - 각 작업에 대해 등급이 지정된 일련의 작업 순서를 어떻게 확인합니까?
- java - Request 객체에 주어진 매개 변수가 포함되어 있는지 확인하는 방법
- jquery - 범위 입력을 받고 주어진 값을 스크롤
- php - 라 라벨에서 예약 날짜 범위가 아직 예약되지 않았습니까?
- python - 팬더 데이터 프레임의 각 행에서 연속적인 값 범위를 효과적으로 확인하려면 어떻게합니까?
- javascript : 범위가 주어진 문자열 중간을 대체합니다
- python - 주어진 요소 다음에 목록의 요소가 나오는지 확인하는 방법
- c++ - 범위의 요소를 이동할 수 있는지 확인하십시오
- python - 여러 열이 나머지 두 열 범위에 있는지 확인해야합니다
- algorithm - 범위 목록이 주어진 범위를 포함하는지 어떻게 알 수 있습니까?
- python - 단어의 매핑이 주어지면 두 문장이 전이적이고 반복적인지 확인하는 방법
- angular - '@Input ()'이 주어 졌는지 언제 확인할 수 있습니까?
- LocalTime이 Java 범위 내에 있는지 확인하십시오
- elasticsearch - 주어진 날짜 범위에서 잎이 10 개 미만인 직원을 선택하십시오
- kotlin - 사용할 주어진 숫자와 범위를 더한 모든 숫자를 찾습니다
- javascript - 주어진 값 범위에서의 백분율
타임 스탬프로 변환하는 것은 strtotime을 사용하여 올바르게 진행하는 방법입니다 (예 :