Làm cách nào tôi có thể nhận được sự khác biệt giữa hai ngày và giờ trong PHP?

Tuy nhiên, nếu chúng ta muốn tính số giây chính xác đã trôi qua giữa ngày một và ngày hai thì sao?

//Our dates
$date1 = "2013-03-01 19:12:45";
$date2 = "2014-03-01 06:37:04";

//Convert them to timestamps.
$date1Timestamp = strtotime[$date1];
$date2Timestamp = strtotime[$date2];

//Calculate the difference.
$difference = $date2Timestamp - $date1Timestamp;

echo $difference;

Nếu bạn chạy đoạn mã trên, bạn sẽ thấy câu trả lời là 31490659

Nói cách khác, 31.490.659 giây đã trôi qua giữa “2013-03-01 19. 12. 45” và “2014-03-01 06. 37. 04”

Một lời giải thích cơ bản về những gì chúng tôi đã làm

  1. Chúng tôi chuyển đổi cả hai chuỗi ngày thành dấu thời gian unix bằng cách sử dụng hàm PHP strtotime. Dấu thời gian unix biểu thị số giây đã trôi qua kể từ 00. 00 ngày 1 tháng 1 năm 1971. Sau khi chuyển đổi chúng thành giây, chúng ta có thể thực hiện một số phép trừ cơ bản để tìm ra sự khác biệt
  2. Sau đó, chúng tôi trừ ngày cũ hơn từ ngày mới hơn

Nhớ. Ngày càng cũ, dấu thời gian của nó sẽ càng nhỏ

Nếu bạn chạy đoạn mã sau, bạn sẽ thấy rằng ngày 2014 có dấu thời gian unix lớn hơn nhiều

$olderDate = "1991-01-02";
$newerDate = "2014-06-07";

echo $olderDate . " is " . strtotime[$olderDate], "
"; echo $newerDate . " is " . strtotime[$newerDate];

Như bạn có thể thấy, “2014-06-07” có dấu thời gian lớn hơn

Điều này là do nhiều giây đã trôi qua kể từ ngày 1 tháng 1 năm 1971 và ngày 7 tháng 6 năm 2014

Sự khác biệt giữa bây giờ và sau đó

Trong một số trường hợp nhất định, bạn có thể cần tính số giây đã trôi qua kể từ một ngày nhất định

Nói cách khác, bao nhiêu thời gian đã trôi qua giữa “bây giờ” và “sau đó”?

//Our dates and times.
$then = "2011-02-02 08:00:00";
$now = time[];

//convert $then into a timestamp.
$thenTimestamp = strtotime[$then];

//Get the difference in seconds.
$difference = $now - $thenTimestamp;

echo $difference;

Một lời giải thích của mã này

  • Chúng tôi truy xuất dấu thời gian hiện tại bằng cách sử dụng chức năng thời gian
  • Sau đó, chúng tôi trừ dấu thời gian cũ hơn khỏi dấu thời gian hiện tại của chúng tôi

Nếu bạn làm mới trang một vài lần, bạn sẽ thấy rằng sự khác biệt về số giây tiếp tục tăng lên

phút và ngày

Trong nhiều trường hợp, bạn sẽ muốn xem số ngày hoặc số phút đã trôi qua

Điều này là do giây là vô dụng đối với người dùng cuối

Để tính số ngày đã trôi qua, bạn có thể làm như sau

//Our "then" date.
$then = "2009-02-04";

//Convert it into a timestamp.
$then = strtotime[$then];

//Get the current timestamp.
$now = time[];

//Calculate the difference.
$difference = $now - $then;

//Convert seconds into days.
$days = floor[$difference / [60*60*24] ];

echo $days;

Như bạn có thể thấy, chúng tôi có thể chuyển đổi giây thành ngày bằng cách sử dụng một số phép toán cơ bản

  1. Có 60 giây trong một phút
  2. Có 60 phút trong một giờ
  3. Có 24 giờ trong một ngày

Nếu bạn nhân các số liệu trên, nó sẽ cho bạn 86400, là tổng số giây trong một ngày

Nếu bạn chia chênh lệch tính bằng giây giữa hai ngày của chúng ta cho 86.400, bạn sẽ nhận được tổng số ngày đã trôi qua

Sau đó, bạn có thể sử dụng hàm sàn để làm tròn kết quả xuống. Nói cách khác, 2. 9 ngày nên trở thành 2 ngày

Để có được số phút, bạn chỉ cần chia chênh lệch tính bằng giây cho 60

//Our "then" date.
$then = "2009-02-04";

//Convert it into a timestamp.
$then = strtotime[$then];

//Get the current timestamp.
$now = time[];

//Calculate the difference.
$difference = $now - $then;

//Convert seconds into minutes.
$minutes = floor[$difference / 60];

echo $minutes;

Như bạn có thể thấy, hầu hết các tính toán này thực sự khá đơn giản

Sử dụng DateTime để tính chênh lệch

Khi bạn hiểu những kiến ​​thức cơ bản về xử lý ngày tháng và dấu thời gian trong PHP, bạn có thể sử dụng đối tượng DateTime

Sử dụng DateTime là một giải pháp tốt hơn đơn giản vì nó sạch hơn và cung cấp cho bạn giao diện OO

Ví dụ: nếu chúng ta muốn lấy sự khác biệt về số ngày bằng cách sử dụng đối tượng DateTime, chúng ta có thể làm như sau

Mới ở đây?

Vấn đề

Bạn có ngày và bạn muốn tính giờ giữa hai ngày đó

Giải pháp

Trong phần sau, bạn sẽ thấy hai phương pháp để tìm ra chênh lệch giờ giữa hai ngày

Phương pháp 1. Sử dụng hàm strtotime[]

Sử dụng hàm strtotime[] để tìm giờ là quy trình gồm hai bước

  1. Chuyển đổi mỗi ngày thành dấu thời gian tương đương [như bạn biết, dấu thời gian là số giây kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 UTC]
  2. Chia dấu thời gian cho [60*60] để có số giờ

Xem ví dụ sau cách thức hoạt động-

[wpdm_file id=119]

đầu ra
Chênh lệch giữa hai ngày là 25 giờ

Làm thế nào nó hoạt động

dòng 3
Chúng tôi chuyển đổi ngày đầu tiên thành dấu thời gian của nó. dòng 4
Chúng tôi chuyển đổi ngày thứ hai thành dấu thời gian của nó. Dòng 5
Vì chênh lệch giữa hai ngày có thể là số âm, nên chúng tôi sử dụng hàm tuyệt đối, abs[], để chỉ nhận giá trị. Sau đó, chúng tôi chia nó cho 60 * 60 để có số giờ

 

Phương pháp 2. Sử dụng phương thức diff[] của lớp DateTIme từ SPL

Tính giờ giữa hai ngày là quy trình 3 bước-

  1. Chuyển đổi từng ngày thành đối tượng DateTime
  2. Tính khoảng thời gian giữa hai ngày làm đối tượng bằng phương thức diff[]
  3. Chuyển đổi đối tượng Khoảng thời gian ngày thành số giờ tương đương bằng phương thức format[]

[wpdm_file id=120]

đầu ra
Chênh lệch giữa hai ngày là 25 giờ

Làm thế nào nó hoạt động

Dòng 5-6
Chúng tôi chuyển đổi hai ngày thành các đối tượng DateTime tương ứng của chúng. dòng 7
Phương thức diff[] trừ $datetimeObj1 khỏi $datetimeObj2 và trả về dưới dạng một đối tượng. Dòng 9-11
Ở đây, chúng tôi kiểm tra xem khoảng thời gian giữa hai ngày có nhiều hơn 1 ngày không. Nếu vậy, chúng tôi chuyển đổi ngày thành giờ bằng cách nhân nó với 24. Ở đây, format[‘%a’] trả về tổng số ngày

Dòng 12-14
Chênh lệch giờ có thể ít hơn 1 ngày. Trong trường hợp đó, chúng tôi trực tiếp chuyển đổi đối tượng khoảng thời gian thành giờ. Ở đây, format[‘%a’] trả về tổng số giờ

Dòng 16
Vì chênh lệch múi giờ giữa hai ngày có thể là chênh lệch ngày và chênh lệch giờ giữa các ngày đó, nên chúng tôi đã cộng cả hai ngày đó để có chênh lệch giờ thực

Làm cách nào để tính chênh lệch giữa hai ngày và giờ trong php?

Bạn chỉ cần sử dụng chênh lệch ngày giờ và định dạng để tính chênh lệch. . 12. 00']; . 12. 00']; . %tôi. %S'];

Làm cách nào để trừ hai ngày trong php?

$date1 = "24-03-2007";

Làm cách nào để kiểm tra thời gian giữa hai lần trong php?

Nhận chênh lệch thời gian giữa hai khe thời gian trong PHP, Bạn có thể sử dụng strtotime[] để tính toán thời gian. Dựa trên yêu cầu của bạn, bạn có thể tùy chỉnh tập lệnh

Chủ Đề