Không cần thiết phải chuyển đổi thành dấu thời gian để thực hiện so sánh, cho rằng các chuỗi được xác nhận là ngày ở định dạng chính tắc 'Yyyy-MM-DD'.
Bài kiểm tra này sẽ hoạt động:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )given:
$start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28';Lưu ý: So sánh các chuỗi như thế này không cho phép ngày "không Valid", ví dụ: . Điều này chỉ hoạt động nếu các giá trị ngày trong chuỗi ở định dạng nhất quán và kinh điển.CONSISTENT and CANONICAL format.
Chỉnh sửa để thêm một ghi chú ở đây, xây dựng rõ ràng. to add a note here, elaborating on the obvious.
Theo nhất quán, ý tôi là ví dụ rằng các chuỗi được so sánh phải ở định dạng giống hệt nhau: tháng phải luôn là hai ký tự, ngày phải luôn là hai ký tự và ký tự phân cách phải luôn là một dấu gạch ngang. Chúng ta không thể so sánh một cách đáng tin cậy "các chuỗi" không phải là bốn nhân vật, hai tháng nhân vật, hai ngày. Ví dụ, nếu chúng ta có một hỗn hợp của một ký tự và hai tháng trong chuỗi, chúng ta sẽ nhận được kết quả bất ngờ khi chúng ta so sánh, '2009-9-30' với '2009-10-11'. Chúng tôi thấy con người thấy "9" là nhỏ hơn "10", nhưng một so sánh chuỗi sẽ thấy '2009-9' lớn hơn '2009-1'. Chúng ta không nhất thiết phải có một ký tự phân tách dấu gạch ngang; Chúng ta có thể so sánh một cách đáng tin cậy các chuỗi ở định dạng $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 0; Nếu có một ký tự phân tách, nó phải luôn ở đó và luôn luôn giống nhau.CONSISTENT, I mean for example that the strings being compared must be in identical format: the month must always be two characters, the day must always be two characters, and the separator character must always be a dash. We can't reliably compare "strings" that aren't four character year, two character month, two character day. If we had a mix of one character and two character months in the strings, for example, we'd get unexpected result when we compared, '2009-9-30' to '2009-10-11'. We humanly see "9" as being less than "10", but a string comparison will see '2009-9' as greater than '2009-1'. We don't necessarily need to have a dash separator characters; we could just as reliably compare strings in $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 0 format; if there is a separator character, it has to always be there and always be the same.
Theo kinh điển, ý tôi là một định dạng sẽ dẫn đến các chuỗi sẽ được sắp xếp theo thứ tự ngày. Đó là, chuỗi sẽ có một đại diện của "năm" đầu tiên, sau đó là "tháng", sau đó là "ngày". Chúng tôi không thể so sánh một cách đáng tin cậy các chuỗi ở định dạng $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 1, bởi vì điều đó không phải là kinh điển. Một so sánh chuỗi sẽ so sánh $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 2 (tháng) trước khi nó so sánh $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 3 (năm) vì so sánh chuỗi hoạt động từ trái sang phải.) Một lợi ích lớn của định dạng chuỗi 'Yyyy-MM-DD' là chính thức; Ngày được thể hiện trong định dạng này có thể được so sánh một cách đáng tin cậy là chuỗi.CANONICAL, I mean that a format that will result in strings that will be sorted in date order. That is, the string will have a representation of "year" first, then "month", then "day". We can't reliably compare strings in $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 1 format, because that's not canonical. A string comparison would compare the $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 2 (month) before it compared $start_date = '2009-06-17'; $end_date = '2009-09-05'; $date_from_user = '2009-08-28'; 3 (year) since the string comparison works from left to right.) A big benefit of the 'YYYY-MM-DD' string format is that it is canonical; dates represented in this format can reliably be compared as strings.
[ADDENDUM]
Nếu bạn thực hiện chuyển đổi dấu thời gian PHP, hãy lưu ý đến những hạn chế.
Trên một số nền tảng, PHP không hỗ trợ các giá trị dấu thời gian sớm hơn 1970-01-01 và/hoặc muộn hơn 2038-01-19. .
Thời gian cũng có thể là một vấn đề, nếu bạn không cẩn thận sử dụng cùng thời gian khi chuyển đổi từ chuỗi thành dấu thời gian và từ dấu thời gian trở lại chuỗi.
Hth
Hii Guys,
Trong nghệ thuật này, tôi sẽ chỉ cho bạn cách kiểm tra ngày hiện tại giữa hai ngày trong PHP. Ngày hiện tại giữa hai ngày Kiểm tra ngày sử dụng PHP.
Bạn có thể kiểm tra ngày giữa hai ngày bằng PHP. Bạn có thể nhận được ngày hiện tại sau đó ngày bắt đầu và ngày kết thúc giữa ngày sau đó trả về đúng nếu không trả lại sai.
Giải pháp 1
$today = date('Y-m-d');
$today=date('Y-m-d', strtotime($today));
$stratDate = date('Y-m-d', strtotime("01/01/2018"));
$endDate = date('Y-m-d', strtotime("01/12/2019"));
if (($today >= $stratDate) && ($today <= $endDate)){
echo "true";
}else{
echo "false";
}
Nếu trả về đúng, ngày hiện tại của bạn ở giữa hai ngày, hãy trả về sai không giữa hai ngày
Giải pháp 2
$stratDate = date('Y-m-d', strtotime("01/01/2018"));
$endDate = date('Y-m-d', strtotime("01/12/2019"));
if ((date('Y-m-d', time()) >= $stratDate) && (date('Y-m-d', time()) <= $endDate)){
echo "true";
}else{
echo "false";
}
Nếu trả về đúng, ngày hiện tại của bạn ở giữa hai ngày, hãy trả về sai không giữa hai ngày
Giải pháp 2
#PHPPHP
Nó sẽ giúp bạn...
Ngày 6 tháng 9 năm 2020c Category: PHP Category : PHP
Trong ví dụ này, tôi muốn chia sẻ với bạn ví dụ nhỏ về cách kiểm tra ngày hiện tại là giữa StartDate và Enddate trong PHP. Chúng tôi sẽ kiểm tra xem ngày hôm nay là giữa hai ngày trong PHP. Chúng tôi chỉ có thể kiểm tra xem ngày hiện tại có giữa hai ngày trong PHP không.
Tôi đã viết nó một cách rất đơn giản để bạn cũng có thể sử dụng với Laravel, Codeigniter, Zend Php Framework. Đó là mã PHP cốt lõi để kiểm tra xem ngày là giữa hai ngày PHP.
Nhiều lần chúng tôi yêu cầu kiểm tra ngày hiện tại là giữa hai ngày hoặc không để đăng ký, dùng thử, thời gian hết hạn của người dùng, v.v. Vì vậy, khi người dùng sẽ đăng ký tại thời điểm đó sẽ quyết định khi nào anh ấy sẽ hết hạn và chúng tôi sẽ luôn kiểm tra với ngày hiện tại. Vì vậy, có thể là bài đăng này có thể giúp bạn kiểm tra xem ngày có tồn tại giữa hai ngày trong PHP không.
Bạn có thể kiểm tra ví dụ đơn giản dưới đây để nó có thể giúp bạn.
Example:
<?php
$currentDate = date('Y-m-d');
$currentDate = date('Y-m-d', strtotime($currentDate));
$startDate = date('Y-m-d', strtotime("01/09/2019"));
$endDate = date('Y-m-d', strtotime("01/10/2019"));
if (($currentDate >= $startDate) && ($currentDate <= $endDate)){
echo "Current date is between two dates";
}else{
echo "Current date is not between two dates";
}
Nếu ngày hiện tại là 09/10/2019 so với nó sẽ trả về đầu ra dưới:
Output:
Current date is between two dates
Tôi hy vọng nó có thể giúp bạn...