Không cần thiết phải chuyển đổi sang dấu thời gian để thực hiện so sánh, vì các chuỗi được xác thực dưới dạng ngày ở định dạng chuẩn 'YYYY-MM-DD'.
Thử nghiệm này sẽ hoạt động:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
được:
$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 các ngày "không hợp lệ", ví dụ: (ngày 32 tháng 12) '2009-13-32' và cho các chuỗi có định dạng kỳ lạ '2009/3/3', sao cho so sánh chuỗi sẽ KHÔNG tương đương với so sánh ngày tháng hoặc dấu thời gian. Đây chỉ hoạt động nếu giá trị ngày trong chuỗi đang ở trong một QUÁN và Canonical định dạng.
CHỈNH SỬA để thêm ghi chú ở đây, giải thích rõ ràng hơn.
Bằng sự ĐỒNG Ý , tôi có nghĩa là ví dụ: các chuỗi được so sánh phải có định dạng giống hệt nhau: tháng phải luôn có hai ký tự, ngày phải luôn có hai ký tự và ký tự phân tách phải luôn là dấu gạch ngang. Chúng tôi không thể so sánh một cách đáng tin cậy các "chuỗi" không phải là năm bốn ký tự, tháng hai ký tự, ngày hai ký tự. Ví dụ: nếu chúng ta có một kết hợp của một ký tự và hai tháng ký tự trong chuỗi, chúng ta sẽ nhận được kết quả không mong đợi khi chúng ta so sánh, '2009-9-30'
với '2009-10-11'
. Con người chúng ta thấy "9" nhỏ hơn "10", nhưng 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ó ký tự phân cách dấu gạch ngang; chúng tôi có thể so sánh một cách đáng tin cậy các chuỗi trong'YYYYMMDD'
định dạng; nếu có một ký tự phân cách, nó phải luôn ở đó và luôn giống nhau.
Theo CANONICAL , ý tôi là một định dạng dẫn đến các chuỗi sẽ được sắp xếp theo thứ tự ngày. Tức là, chuỗi sẽ có đại diện là "năm" trước, sau đó là "tháng", sau đó là "ngày". Chúng tôi không thể so sánh đáng tin cậy các chuỗi theo 'MM-DD-YYYY'
định dạng, vì đó không phải là định dạng chuẩn. So sánh chuỗi sẽ so sánh MM
(tháng) trước khi so sánh YYYY
(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à nó là chuẩn; Các ngày được biểu thị ở định dạng này có thể được so sánh một cách đáng tin cậy dưới dạng chuỗi.
[ADDENDUM]
Nếu bạn thực hiện chuyển đổi dấu thời gian php, hãy lưu ý 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. (Đó là bản chất của số nguyên 32-bit dấu thời gian unix.) Các phiên bản sau pf php (5.3?) Được cho là giải quyết vấn đề đó.
Múi giờ cũng có thể là một vấn đề, nếu bạn không cẩn thận sử dụng cùng một múi giờ khi chuyển đổi từ chuỗi sang dấu thời gian và từ dấu thời gian trở lại chuỗi.
HTH