주어진 날짜와 오늘 비교
PHP주어진 날짜와 오늘 비교
나는 다음과 같다.
$var = "2010-01-21 00:00:00.0"
이 날짜를 오늘 날짜와 비교하고 싶습니다 (즉,이 $ var가 오늘 이전인지 오늘인지 등을 알고 싶습니다).
어떤 기능을 사용해야합니까?
해결법
-
==============================
1.
strtotime($var);
시간 값으로 변환합니다.
time() - strtotime($var);
$ var 이후 초를 알려줍니다.
if((time()-(60*60*24)) < strtotime($var))
$ var가 마지막 날에 있었는지 확인합니다.
-
==============================
2.이 형식은 표준 문자열 비교에 완벽하게 적합합니다.
이 형식은 표준 문자열 비교에 완벽하게 적합합니다.
if (date1 > date2)
이 형식으로 오늘 날짜를 얻으려면 : date ( "Y-m-d H : i : s")를 사용하면됩니다.
그래서:
$today = date("Y-m-d H:i:s"); $date = "2010-01-21 00:00:00"; if ($date < $today) {
그것은 그 형식의 아름다움입니다 : 그것은 훌륭하게 명령합니다. 물론, 정확한 상황에 따라 효율성이 떨어질 수 있지만 훨씬 편리하고 코드 유지 관리가 더 쉬울 수도 있습니다. 실제로 판단을 내리기 위해서는 더 많은 것을 알아야합니다.
올바른 시간대는 예를 들어,
date_default_timezone_set('America/New_York');
사용 가능한 PHP 시간대를 보려면 여기를 클릭하십시오.
-
==============================
3.여기 있습니다 :
여기 있습니다 :
function isToday($time) // midnight second { return (strtotime($time) === strtotime('today')); } isToday('2010-01-22 00:00:00.0'); // true
또한, 몇 가지 더 많은 도우미 기능 :
function isPast($time) { return (strtotime($time) < time()); } function isFuture($time) { return (strtotime($time) > time()); }
-
==============================
4.BoBby Jack을 완료하려면 PHP 5.2.2 이상이있는 경우 DateTime OBject를 사용하십시오.
BoBby Jack을 완료하려면 PHP 5.2.2 이상이있는 경우 DateTime OBject를 사용하십시오.
if(new DateTime() > new DateTime($var)){ // $var is before today so use it }
-
==============================
5.DateTime 클래스를 사용할 수 있습니다.
DateTime 클래스를 사용할 수 있습니다.
$past = new DateTime("2010-01-01 00:00:00"); $now = new DateTime(); $future = new DateTime("2020-01-01 00:00:00");
비교 연산자 작동 * :
var_dump($past < $now); // bool(true) var_dump($future < $now); // bool(false) var_dump($now == $past); // bool(false) var_dump($now == new DateTime()); // bool(true) var_dump($now == $future); // bool(false) var_dump($past > $now); // bool(false) var_dump($future > $now); // bool(true)
DateTime 객체에서 타임 스탬프 값을 가져 와서 비교할 수도 있습니다.
var_dump($past ->getTimestamp()); // int(1262286000) var_dump($now ->getTimestamp()); // int(1431686228) var_dump($future->getTimestamp()); // int(1577818800) var_dump($past ->getTimestamp() < $now->getTimestamp()); // bool(true) var_dump($future->getTimestamp() > $now->getTimestamp()); // bool(true)
* ===는 동일한 날짜를 나타내는 경우에도 두 개의 다른 DateTime 객체를 비교할 때 false를 반환합니다.
-
==============================
6.
$toBeComparedDate = '2014-08-12'; $today = (new DateTime())->format('Y-m-d'); //use format whatever you are using $expiry = (new DateTime($toBeComparedDate))->format('Y-m-d'); var_dump(strtotime($today) > strtotime($expiry)); //false or true
-
==============================
7.몇 년 후, 나는 바비 잭 (Bobby Jack)의 지난 24 시간 관찰 결과가 오늘이 아니라고 !!! 그리고 나는 그 대답이 너무 많이 upvoted ... 놀랐습니다
몇 년 후, 나는 바비 잭 (Bobby Jack)의 지난 24 시간 관찰 결과가 오늘이 아니라고 !!! 그리고 나는 그 대답이 너무 많이 upvoted ... 놀랐습니다
특정 날짜가 다른 날짜보다 작거나 같거나 큰지 비교하려면 먼저 해당 날짜를 시작으로 낮추어야합니다. 다시 말해, 두 날짜 모두 같은 00:00:00 시간에 대해 이야기하고 있는지 확인하십시오. 이것은 간단하고 우아하게 다음과 같이 할 수 있습니다 :
strtotime("today") <=> strtotime($var)
$ var에 OP가 지정된 것과 같이 00:00:00에 시간 부분이 있으면.
<=> 바꾸기 (PHP 7에서 이와 같이 유지)
또한, 분명히, 우리는 둘 다 동일한 시간대에 대해 이야기하고 있습니다. 지원되는 시간대 목록
-
==============================
8.내 경험에 근거하여주의를 기울여야하며, 목적이 날짜 만 포함하는 경우 타임 스탬프를 포함해야합니다. 예를 들어 오늘은 "2016-11-09"입니다. 타임 스탬프가 포함 된 비교는 여기에서 논리를 무효화합니다. 예,
내 경험에 근거하여주의를 기울여야하며, 목적이 날짜 만 포함하는 경우 타임 스탬프를 포함해야합니다. 예를 들어 오늘은 "2016-11-09"입니다. 타임 스탬프가 포함 된 비교는 여기에서 논리를 무효화합니다. 예,
// input $var = "2016-11-09 00:00:00.0"; // check if date is today or in the future if ( time() <= strtotime($var) ) { // This seems right, but if it's ONLY date you are after // then the code might treat $var as past depending on // the time. }
위의 코드는 옳은 것처럼 보이지만, 비교할 날짜 만있는 경우 위의 코드는 올바른 논리가 아닙니다. 왜? 왜냐하면, time ()과 strtotime ()은 timestamp를 제공하기 때문이다. 즉, 비록 두 날짜가 같은 날이지만, 시간의 차이가 중요합니다. 아래 예제를 고려하십시오.
// plain date string $input = "2016-11-09";
입력이 일반 날짜 문자열이기 때문에 $ input에서 strtotime ()을 사용하는 것은 2016-11-09 자정이라고 가정합니다. 그래서, 자정 이후 언제든지 () 실행 시간은 같은 날에 $ 입력을 항상 과거로 취급합니다.
이 문제를 해결하려면 다음과 같이 간단히 코딩하면됩니다.
if (date("Y-m-d") <= $input) { echo "Input date is equal to or greater than today."; }
-
==============================
9.
$date1=date_create("2014-07-02"); $date2=date_create("2013-12-12"); $diff=date_diff($date1,$date2);
(w3schools 예제, 완벽하게 작동합니다)
-
==============================
10.다른 유용한 예제는 간단한 PHP 클래스가 될 수 있습니다.
다른 유용한 예제는 간단한 PHP 클래스가 될 수 있습니다.
비교 기능뿐만 아니라 많은 방법을 제공합니다.
예 :
$date = new simpleDate(); echo $date->now()->compare('2010-01-21 00:00:00')->isBefore();
튜토리얼 페이지에는 많은 예제가 있습니다. 여기를 클릭하십시오.
-
==============================
11.Josua의 w3schools 응답 확대 :
Josua의 w3schools 응답 확대 :
//create objects for the dates to compare $date1=date_create($someDate); $date2=date_create(date("Y-m-d")); $diff=date_diff($date1,$date2); //now convert the $diff object to type integer $intDiff = $diff->format("%R%a"); $intDiff = intval($intDiff); //now compare the two dates if ($intDiff > 0) {echo '$date1 is in the past';} else {echo 'date1 is today or in the future';}
이게 도움이 되길 바란다. stackoverflow 내 첫 게시물!
from https://stackoverflow.com/questions/2113940/compare-given-date-with-today by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP에서는 디렉토리 탐색을 방지하지만 경로는 허용합니다. (0) | 2018.09.12 |
---|---|
PHP에서 연관 배열 정렬 [duplicate] (0) | 2018.09.12 |
PHP에서 @ 연산자의 오류를 표시하지 않습니다. [닫힘] (0) | 2018.09.12 |
url 매개 변수로 배열 전달하기 (0) | 2018.09.12 |
PHP 5의 호출자 함수? (0) | 2018.09.12 |