expireDate //from db if($today "0", v, v" /> expireDate //from db if($today "0", v, v" />

So Sánh Thời Gian Trong Php

Làm thế như thế nào tôi có thể đối chiếu nhì ngày trong PHP?

Ngày được lưu trữ vào cơ sở dữ liệu theo định hình sau

2011-10-2

Nếu tôi mong muốn so sánh ngày hôm nay cùng với ngày trong đại lý tài liệu để xem loại như thế nào lớn hơn, tôi đã có tác dụng nỗ lực nào?

Tôi đã thử nó

$today = date("Y-m-d"); $expire = $row->expireDate //from db if($today < $expireDate)

dẫu vậy nó ko thực thụ chuyển động theo cách đó. Cách làm sao khác để triển khai điều đó?


php  date  compare 
— Sarmen B. mối cung cấp
Gán ngày db cho một đối tượng người tiêu dùng DateTime và kế tiếp đối chiếu những đối tượng đó. Bạn hoàn toàn có thể tra cứu thấy một ví dụ tuyệt vào stackoverflow.com/questions/961074/ mẹo
— Peter

Câu trả lời:


80

vào cơ sở tài liệu ngày tháng trông như vậy này 2011-10-2

Lưu trữ nó vào YYYY-MM-DD với sau đó so sánh chuỗi sẽ chuyển động vày "1"> "0", v.v.

Bạn đang xem: So sánh thời gian trong php


— Matthew nguồn
2
nhưng mà điều gì đang xẩy ra trường hợp chúng trông như thế này,
— 2011-10 /
14
Davo, sự so sánh tạm dừng ở cam kết từ thứ nhất khác. Trong trường phù hợp này, chữ số lắp thêm tứ của "1" <"2", vày vậy chúng ta nhận ra hiệu quả cơ mà chúng ta ý muốn đợi.
— Matthew
1
Tôi xin lỗi :), đang không đủ cẩn thận.
— dav
sẽ thao tác làm việc dưới đây 2016-03-27 11:59:47 ::: 2016-03-14 10:30:00?
— shorif2000
221

Nếu tất cả các ngày của khách hàng là sau ngày 1 mon 1 năm 1970, chúng ta cũng có thể áp dụng một chiếc nào đấy như:

$today = date("Y-m-d"); $expire = $row->expireDate; //from database $today_time = strtotime($today); $expire_time = strtotime($expire); if ($expire_time < $today_time)

Nếu ai đang áp dụng PHP 5> = 5.2.0, chúng ta có thể sử dụng lớp DateTime:

$today_dt = new DateTime($today); $expire_dt = new DateTime($expire); if ($expire_dt < $today_dt)

Hoặc một chiếc gì đấy dọc từ phần đông dòng này.


— Hugo Peixokhổng lồ nguồn
Nếu tôi lưu giữ lại một phương pháp đúng mực, côn trùng quyên tâm về vấn đề 1st of January of 1970chỉ vận dụng cho những phiên bạn dạng PHP.. cũ chạy trên Windows cùng nó không khi nào là vụ việc trên Unix.
— Álvaro González
Tôi ưa thích câu vấn đáp này. Đó là một trong những sự gạn lọc tuyệt vời nhất biến hóa ngày thành strtotime ()
— Erich García
2
Bây tiếng chưa hẳn là "Nếu tất cả các ngày của doanh nghiệp là sau ngày 1 tháng một năm 1970" với "trước năm 2038"? xem của chúng tôi cho những lỗi y2k38. strtotimeđã trả về false cho một ngày to hơn. stackoverflow.com/questions/2012589/
— hy
Lưu ý rằng DateTimephương pháp là phương pháp yêu mếm. Đối tượng kia hoàn toàn có thể có tác dụng nhiều hơn strtotimekhi nào không còn.
— Machavity
new DateTime("now")cũng vận động để mang lại ngày lúc này
— Breith
23

Chỉ để khen đầy đủ câu vấn đáp đã có được giới thiệu, xem ví dụ sau:

$today = new DateTime(""); $expireDate = new DateTime($row->expireDate); //from database if($today->format("Y-m-d") < $expireDate->format("Y-m-d"))

Cập nhật: Hoặc dễ dàng và đơn giản áp dụng hàm date -school old () :

if(date("Y-m-d") < date("Y-m-d", strtotime($expire_date)))
— d.raev nguồn
1
Ngày là 1 trong hàm, không hẳn là lớp / hàm sinh sản.
— spdionis
2
spdionis cảm ơn vị dìm xét, tôi sẽ đổi khác chữ in hoa để đào thải sự nhầm lẫn có thể.
— d.raev
6

Tôi sẽ không còn làm cho điều này cùng với PHP. Thương hiệu dữ liệu nên biết, hôm nay là ngày gì (ví dụ: áp dụng MySQL-> NOW ()), vì thế sẽ rất tiện lợi nhằm đối chiếu vào Truy vấn cùng trả về công dụng, cơ mà không tồn tại bất kỳ sự việc nào tùy trực thuộc vào Loại ngày được sử dụng

SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
— Dr.Molle mối cung cấp
cảm ơn tuy vậy tôi thực sự áp dụng date () tôi ko tàng trữ ngày lúc này vào một db
— Sarmen B.
4
Nhưng các bạn tàng trữ expireDate vào một db. So sánh ngày nay với NOW ()
— Dr.Molle
4
$today = date("Y-m-d");//Y-m-d H:i:s $expireDate = new DateTime($row->expireDate);// From db $date1=date_create($today); $date2=date_create($expireDate->format("Y-m-d")); $diff=date_diff($date1,$date2); //emang đến $timeDiff; if($diff->days >= 30)else
— Atif Mahmood mối cung cấp
2

Đây là một trong cách để giành được sự khác biệt giữa hai ngày trong vài ba phút ít.

// phối dates $date_compare1= date("d-m-Y h:i:s a", strtotime($date1)); // date now $date_compare2= date("d-m-Y h:i:s a", strtotime($date2)); // calculate the difference $difference = strtotime($date_compare1) - strtotime($date_compare2); $difference_in_minutes = $difference / 60; emang lại $difference_in_minutes;
— Đồng cỗ mối cung cấp
Câu hỏi đang yêu thương cầu so sánh 2 ngày - câu vấn đáp của người sử dụng là thêm một lượng nội dung bổ sung cập nhật (tức là đặt tinh thần trực đường / nước ngoài tuyến) không quan trọng như một câu trả lời mang lại câu hỏi. Phần câu trả lời của người tiêu dùng trong các số đó Việc so sánh diễn ra gần giống nhỏng câu trả lời sẽ có ở chỗ này .
— crazyloonybin
Cập nhật câu hỏi, tôi đã đăng câu vấn đáp không nên trong câu hỏi không đúng ^^;) Nó ko giống như câu trả lời, chỉ cần thêm ý kiến ​​của tớ về kiểu cách so sánh chúng và cảm nhận sự khác biệt vào vài phút.
— Syno
1
Tôi đang xóa downvote của tôi vì bạn dạng cập nhật của khách hàng, bây chừ trông hơi hơn các :)
— crazyloonybin
2

Quý Khách rất có thể đổi khác ngày thành vết thời gian UNIX và đối chiếu sự khác biệt giữa chúng trong vài ba giây.

$today_date=date("Y-m-d"); $entered_date=$_POST<"date">; $dateTimestamp1 = strtotime($today_date); $dateTimestamp2 = strtotime($entered_date); $diff= $dateTimestamp1-$dateTimestamp2; //eđến $diff; if ($diff<=0)
— Shruthi đỏ mối cung cấp
0

Tôi cũng đều có điều đó và tôi giải quyết nó bởi cách:

$today = date("Ymd"); $expire = str_replace("-", "", $row->expireDate); //from db if(($today - $expire) > $NUMBER_OF_DAYS)
— PiotrK nguồn
Tại sao nghệ thuật này chuyển động cần được giải thích vào câu vấn đáp.
— mickmackusa
Vui lòng vấn đáp câu hỏi đang đăng của OP, không hẳn phương pháp các bạn giải quyết trường hợp khác biệt của riêng biệt chúng ta.
— mickmackusa
0

Đây là guồng tảo của tớ về phong thái giành được sự khác hoàn toàn về số ngày giữa hai ngày với PHP. Lưu ý Việc áp dụng "!" vào định hình để đào thải phần thời gian của ngày, nhờ vào biết tin từ DateTime createdFromFormat nhưng không tồn tại thời gian .

Xem thêm: Hải Sản Phố Hà Nội - Hải Sản Phố Ở Quận Ba Đình, Hà Nội

$today = DateTime::createFromFormat("!Y-m-d", date("Y-m-d")); $wanted = DateTime::createFromFormat("!d-m-Y", $row<"WANTED_DELIVERY_DATE">); $diff = $today->diff($wanted); $days = $diff->days; if (($diff->invert) != 0) $days = -1 * $days; $overdue = (($days < 0) ? true : false); print " ";
— thợ kyên ổn trả nguồn
-1

Tìm thấy câu trả lời trên một blog với nó đơn giản và dễ dàng như:

strtotime(date("Y"."-01-01")) -strtotime($newdate))/86400

Và bạn sẽ đã có được phần đa ngày thân 2 ngày.


— kooli mối cung cấp
Điều này có thể vẫn xử lý một sự việc khác. Xin vui mắt chỉ vấn đáp thắc mắc của OP.
— mickmackusa
-1

Như vậy vận động bởi vì lô ghích so sánh chuỗi của PHP.. Đơn giản là chúng ta cũng có thể kiểm tra ...

if ($startdate < $date) if ($startdate > $date)

Cả hai ngày yêu cầu làm việc cùng một định dạng. Các chữ số cần phải đệm bằng 0 sinh hoạt bên trái và được thu xếp theo sản phẩm công nghệ trường đoản cú từ bỏ quan trọng đặc biệt tuyệt nhất mang lại ít đặc biệt quan trọng tốt nhất. Y-m-dcùng Y-m-d H:i:svừa lòng phần nhiều điều kiện này.


— sanjyot mối cung cấp
1
d-m-Ysẽ không còn hoạt động .. Y-m-d(với số 0 bậc nhất nhỏng 2016-05-08) đang vận động. Kiểm tra phần lớn ngày đó sinh hoạt d-m-Yformat 01-10-2016với 20-02-năm nhâm thìn, đối chiếu bên dưới dạng chuỗi 0 <2, nó vẫn dừng đối chiếu nhưng ko đúng chuẩn ...
— Arxeiss
Dưới đó là minh chứng cho thấy thêm chuyên môn của các bạn sẽ ko đối chiếu đúng mực ngày của OP cùng với ngày hôm nay: 3v4l.org/SNHKT
— mickmackusa
OP. có định hình ngày khác nhau. ngày trông giống hệt như 2011-10-2.
— mickmackusa
-1

Nếu bạn muốn một ngày ($ date) quá hạn sử dụng vào một khoảng chừng thời hạn, ví dụ như ngày quá hạn mã thông báo khi triển khai đặt lại mật khẩu, đây là bí quyết chúng ta có thể làm:

$date = $row->expireDate; $date->add(new DateInterval("PT24H")); // adds 24 hours $now = new DateTime(); if($now < $date)

Nhưng trong trường phù hợp của công ty, bạn cũng có thể triển khai so sánh nlỗi sau:

$today = new DateTime("Y-m-d"); $date = $row->expireDate; if($today < $date)
— faye.babacar78 nguồn
Câu trả lời này là bỏ qua các thắc mắc được đăng ban sơ. Vui lòng thực hiện tài liệu mẫu mã vị OPhường cung ứng.
— mickmackusa
Đó chưa hẳn là đúng đắn phần đông gì anh chàng đang yêu thương cầu giúp sức tuy nhiên tôi suy nghĩ cách này có thể góp nếu như một fan hiểu những hiệ tượng.
— faye.babacar78
Tôi phát âm những qui định, tuy nhiên mã này sẽ không trả lời câu hỏi được hỏi. Trang này vẫn đầy ắp phần đa câu vấn đáp ko đúng đắn với ko liên quan - điều này chỉ khiến cho những đơn vị nghiên cứu bồn chồn và tiêu tốn lãng phí thời gian của họ. Tôi đã cố gắng chú ý những công ty nghiên cứu.
— mickmackusa
Chà, tôi nghĩ nó ko khó lắm, anh ta hoàn toàn có thể sẽ thực hiện lớp DateTime () nỗ lực bởi hàm date (). Câu trả lời tôi đặt tại trên là bằng phương pháp làm sao đó để mang ra ý tưởng cho các nhà nghiên cứu và phân tích.
— faye.babacar78
1
Tôi đã hoàn thành tái diễn chủ yếu mình cùng từ bỏ vứt cuộc trao đổi này. Giải pháp cao thứ hai ( stackoverflow.com/a/3847762/2943403 ) cho biết một cách đơn giản kinh khủng (bắt buộc tấn công bại) để chế tác hai đối tượng người dùng datetime. Tôi hoàn toàn trù trừ requestDate()cách thức yêu thuật của người sử dụng làm những gì - không tồn tại đề cập tới nó sinh hoạt bất cứ đâu. Tôi sẽ không sử dụng câu trả lời của chúng ta, cũng tương tự không đề xuất ngẫu nhiên công ty nghiên cứu và phân tích như thế nào sử dụng giải pháp của người tiêu dùng. Tôi ko thấy bản thân đổi khác phiếu bầu của mình.
— mickmackusa
-2

đầu tiên, thử đưa ra định dạng bạn muốn cho thời hạn ngày ngày nay của máy công ty của bạn:

Có được thời gian ngày hiện tại tại

$ current_date = getdate ();

Ngày cùng tiếng riêng biệt để quản lý chúng theo ý muốn:

$ current_date_only = $ current_date ."- ". $ current_date ."-". $ current_date ; $ current_time_only = $ current_date <"hours">. ":". $ current_date <"phút">. ":". $ current_date <"giây">;

So sánh nó tùy ở trong vào Việc nhiều người đang sử dụng donly date tốt datetime vào DB của bạn:

$ bây giờ = $ current_date_only. " ". $ current_time_only;

hoặc là

$ từ bây giờ = $ current_date_only;

if ($ bây giờ <$ expireDate)

hi vọng nó giúp


— ernestolorebởi vì mối cung cấp
Câu trả lời này khiến cho không tồn tại cố gắng nỗ lực nhằm xử lý thắc mắc ban sơ. OP. ko quan tâm mang đến giờ, phút hoặc giây.
— mickmackusa
khi áp dụng website của chúng tôi, chúng ta xác thực rằng bạn vẫn gọi cùng hiểu Chính sách cookie cùng Chính sách bảo mật thông tin của công ty chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.