Làm cách nào để phân biệt hai ngày 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

1. Sử dụng lớp PHP DateTime để tính toán sự khác biệt giữa hai ngày-thời gian. Phương thức diff[] của lớp DateTime tạo đối tượng DateInterval tính toán sự khác biệt giữa hai đối tượng ngày/giờ theo thời gian [tổng số ngày, năm, tháng, ngày, giờ, phút, giây, v.v. ]

$datetime_1 = '2022-04-10 11:15:30';
$datetime_2 = '2022-04-12 13:30:45';

$start_datetime = new DateTime[$datetime_1];
$diff = $start_datetime->diff[new DateTime[$datetime_2]];

echo $diff->days.' Days total
';
echo $diff->y.' Years
';
echo $diff->m.' Months
';
echo $diff->d.' Days
';
echo $diff->h.' Hours
';
echo $diff->i.' Minutes
';
echo $diff->s.' Seconds
';

Tính toán và nhận chênh lệch thời gian tính bằng phút

$total_minutes = [$diff->days * 24 * 60];
$total_minutes += [$diff->h * 60];
$total_minutes += $diff->i;

echo 'Diff in Minutes: '.$total_minutes;

2. Bạn có thể sử dụng hàm strtotime[] để lấy chênh lệch thời gian giữa hai ngày [DateTimes] tính bằng phút bằng PHP

Làm cách nào để có được sự khác biệt của hai ngày trong PHP?

Hàm date_diff[] là một hàm có sẵn trong PHP được sử dụng để tính toán sự khác biệt giữa hai ngày. Hàm này trả về một đối tượng DateInterval nếu thành công và trả về FALSE nếu thất bại.

Làm cách nào để có chênh lệch tháng giữa hai ngày trong PHP?

php $sdate = "1981-11-04";

Làm cách nào để tìm sự khác biệt giữa hai ngày tính bằng phút trong PHP?

$start = date_create['2015-01-26 12. 01. 00']; . 15. 00']; . $diff=date_diff[$end,$start]; print_r[$diff]; You get results what do you want.

Làm cách nào tôi có thể so sánh ngày hôm nay với một ngày khác trong PHP?

chúng ta có thể phân tích ngày bằng toán tử so sánh đơn giản nếu ngày đã cho có định dạng tương tự. ?

Chủ Đề