Bài tập so sánh 2 thời gian 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.

Các-bài-tập-về-định-dạng-thời-gian-cộng,-trừ-thời-gian

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.

1. Bắt đầu

Ví dụ chúng ta có chuỗi thời gian 2017-10-21 10:32:00, cần so với hiện tại đã quá 7 ngày chưa.

Đầ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.
  • 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.

2. Toàn bộ code:

3. 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.

Bài tập so sánh 2 thời gian trong php
5 (100%) 1 vote

Add Comment