Giờ khác php

Theo mặc định, không có phương thức nào có sẵn trên lớp DateTime hoặc DateInterval để lấy sự khác biệt giữa hai đối tượng DateTime trong vài giây. Do đó, bạn có thể lấy chênh lệch dấu thời gian của hai ngày hoặc tự tính số giây

So sánh dấu thời gian để nhận số giây giữa hai ngày

Chúng ta có thể chỉ cần so sánh dấu thời gian của hai ngày để có được sự khác biệt tính bằng giây. Ví dụ

$start = new DateTime('2011-12-31 00:00:00');
$end = new DateTime('2021-01-01 00:00:00');

echo $end->getTimestamp() - $start->getTimestamp(); // output: 284169600

Xin lưu ý rằng việc so sánh dấu thời gian có thể dẫn đến sự cố với ngày trước năm 1970 và sau năm 2038

Tính số giây giữa hai ngày

Bạn có thể tính số giây giữa hai ngày theo cách sau

$start = new DateTime('2011-12-31 00:00:00');
$end = new DateTime('2021-01-01 00:00:00');
$diff = $start->diff($end);

$daysInSecs = $diff->format('%r%a') * 24 * 60 * 60;
$hoursInSecs = $diff->h * 60 * 60;
$minsInSecs = $diff->i * 60;

$seconds = $daysInSecs + $hoursInSecs + $minsInSecs + $diff->s;

echo $seconds; // output: 284169600

Việc tính toán hoạt động theo cách sau

  • Sử dụng , thêm dấu trừ khi kết quả là âm;
  • Sử dụng cung cấp cho chúng tôi tổng số ngày giữa hai ngày;
  • Sử dụng định dạng %r%a cùng nhau, chúng ta có thể nhận được số ngày âm/dương. Sử dụng điều đó, chúng ta có thể chuyển đổi số ngày thành giây bằng cách nhân nó với giờ trong một ngày, phút trong một giờ và giây trong một phút (i. e. days * 24 * 60 * 60);
  • Phép tính ở bước cuối cùng không tính đến giờ, phút và giây trong chênh lệch ngày (vì chúng không có trong định dạng %a). Để bao gồm những thứ đó, chúng tôi chỉ cần sử dụng và chuyển đổi chúng thành giây như trong ví dụ trên

Hy vọng bạn tìm thấy bài viết này hữu ích. Nó được xuất bản vào ngày 01 tháng 1 năm 2021. Hãy thể hiện tình yêu và sự ủng hộ của bạn bằng cách

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng năm

CHỌN DATEDIFF(năm, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »


Định nghĩa và cách sử dụng

Hàm DATEDIFF() trả về sự khác biệt giữa hai ngày

cú pháp

DATEDIFF(khoảng thời gian, ngày1, ngày2)

Giá trị tham số

Tham sốDescriptionintervalBắt buộc. Phần trở lại. Có thể là một trong các giá trị sau
  • năm, yyyy, yy = Năm
  • quý, qq, q = Quý
  • tháng, mm, m = tháng
  • dayofyear = Ngày trong năm
  • ngày, dy, y = Ngày
  • tuần, ww, wk = Tuần
  • ngày trong tuần, dw, w = Ngày trong tuần
  • giờ, hh = giờ
  • phút, mi, n = Phút
  • thứ hai, ss, s = Thứ hai
  • mili giây, ms = Mili giây
date1, date2Bắt buộc. Hai ngày để tính chênh lệch giữa

chi tiết kỹ thuật

hoạt động trong. Máy chủ SQL (bắt đầu từ năm 2008), Cơ sở dữ liệu Azure SQL, Kho dữ liệu Azure SQL, Kho dữ liệu song song

Thêm ví dụ

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày tháng

CHỌN DATEDIFF(tháng, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng giờ

CHỌN DATEDIFF(giờ, '25/08/2017 07. 00', '25/08/2017 12. 45') AS DateDiff;

Tự mình thử »

Be careful using:

$date1 = new DateTime('now');
$date2 = new DateTime('tomorrow');

$interval = date_diff($date1, $date2);

echo $interval->format('In %a days');

In some situations, this won't say "in 1 days", but "in 0 days".
I think this is because "now" is the current time, while "tomorrow" is the current day +1 but at a default time, lets say:

Now: 08:00pm, 01.01.2015
Tomorrow: 00:00am, 02.01.2015

In this case, the difference is not 24 hour, so it will says 0 days.

Better use "today", which should also use a default value like:

Today: 00:00am, 01.01.2015
Tomorrow: 00:00am, 02.01.2015

which now is 24 hour and represents 1 day.

$date1 = new DateTime('now');
$date2 = new DateTime('tomorrow');
0

$date1 = new DateTime('now');
$date2 = new DateTime('tomorrow');
1

Chúng tôi sẽ sử dụng chức năng tích hợp date_diff() để lấy chênh lệch múi giờ tính bằng phút. Đối với điều này, chúng tôi sẽ cần ngày bắt đầu và ngày kết thúc để tính chênh lệch thời gian của chúng tính bằng phút bằng cách sử dụng hàm date_diff()

cú pháp

date_diff($datetime1, $datetime2);

Thông số. Hàm date_diff() chấp nhận hai tham số như đã đề cập ở trên và được mô tả bên dưới

  • $datetime1. Đây là một tham số bắt buộc vì nó chỉ định đối tượng DateTime bắt đầu/đầu tiên
  • $datetime2. Đây là một tham số bắt buộc vì nó chỉ định đối tượng DateTime kết thúc/thứ hai

Giá trị trả về. Hàm này trả về sự khác biệt giữa đối tượng DateTime đầu tiên và đối tượng DateTime thứ hai, nếu không, nó sẽ trả về false nếu không thành công

ví dụ 1. Chương trình dưới đây minh họa hàm date_diff() để tính chênh lệch múi giờ tính bằng phút

Làm cách nào để tính chênh lệch giờ trong php?

$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);

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

php $time1 = strtotime('08. 00. 00'); . 30. 00'); . Đoạn mã trên sẽ làm tròn thành phút. Lưu câu trả lời này. $difference = round(abs($time2 - $time1) / 3600,2); echo $difference; Note: The code above will round to minutes. Save this answer.

Làm cách nào để tính hai chênh lệch thời gian trong php?

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ờ, . ). $datetime_1 = '2022-04-10 11. 15. 30'; . 30. 45';

Làm cách nào để tính chênh lệch thời gian theo giờ và phút trong php?