So Sánh Ngày Trong Php

Tiếp theo phần bài tập về thời gian trong php, ví dụ này sẽ so sánh mốc thời gian nhập vào so với hiện tại.

Bạn đang xem: So sánh ngày trong php

*

Xem toàn bộ chuyên đề:

Yêu cầu bài này từ một thời gian dạng string (Có thể từ CSDL, hay từ người dùng nhập vào… ) và so với mốc 7 ngày. Nếu nhỏ hơn hay bằng 7 ngày thì in ra ‘trong thời gian khuyến mãi‘, nếu lớn hơn 7 ngày thì in ra ‘chương trình đã kết thúc‘.

Dựa vào yêu cầu, chúng ta cần tiến hành:

Chuyển thời gian từ string thành timestamp.Lấy thời gian hệ thống dạng timestamp.Tính hiệu của 2 thời gian này và so với mốc 7 ngày.

Bắt đầu

Đầu tiên, bạn cần lấy thời gian hiện tại, chú ý timezone cho đúng (Có thể cài đặt timezone này trên VPS, hay file ini mà mình đã hướng dẫn trong serie Centos).

Tiếp đến ta cần chuyển thời gian cần so sánh sang timestamp. Để làm việc này có 2 cách : dùng strtotime hay date_parse_from_format. Như phần trước mình đã so sánh 2 hàm này. Để tránh nhầm trong chuyển đổi cần hiểu được kiểu dữ liệu nhập vào và kết quả nhận được.

strtotime chuyển từ string định dạng nhất định sang timestamp.

Xem thêm: Muốn Tìm Số Hạng Ta Lấy - Câu Hỏi Của Hoàng Trung Hải

date_parse_from_format chuyển từ string theo định dạng bất kỳ sang mảng, rồi dùng hàm mktime chuyển mảng này sang timestamp.

Nhược điểm hàm date_parse_from_format dài hơn, nhiều bước hơn nhưng xử lý được trong những trường hợp không dùng đc hàm strtotime. Trong bài, với định dạng Y-m-d H:i:s thì cả 2 hàm đều dùng được, mình sẽ hướng dẫn theo 2 cách.

Ở đây $time_stamp và $time_stamp1 là 2 biến chuyển từ string qua, nếu bạn in ra, kết quả 2 biến này giống nhau. Khi ứng dụng, bạn chỉ cần dùng 1 trong 2 cách thôi nhé.

Như vậy ta đã có thời gian hiện tại và thời gian nhập vào theo timestamp, Là số nguyên và chính là số giây. Vì vậy bây giờ chúng ta có thể so sánh hiệu của chúng so với mốc 7 ngày cũng được đổi sang giây.

7*24*60*60){ echo "Chương trình đã kết thúc"; }else{ echo "Trong thời gian khuyến mãi"; }?>

Toàn bộ code:

7*24*60*60){ echo "Chương trình đã kết thúc"; }else{ echo "Trong thời gian khuyến mãi"; }?>

Lời kết

Trong phần tính toán thời gian bạn nên đổi sang timestamp để việc tính toán được thuận lợi, khi đổi cần chú ý string có dùng được hàm strtotime hay không, nếu không có thể dùng date_parse_from_format để chuyển đổi. Còn về chi tiết cách dùng các hàm trong bài bạn xem lại phần chuyên đề về thời gian trong php của mình.