Hướng dẫn php time difference in seconds - chênh lệch thời gian php tính bằng giây

Do các hạn chế của UNIX Epoch, bạn có thể gặp vấn đề về ngày tổng hợp trước năm 1970 và sau năm 2038. Tôi chọn mất độ chính xác [= không nhìn vào giây duy nhất] nhưng tránh để vượt qua các chuyển đổi Epoch Máng [GetTimestamp]. Nó phụ thuộc vào những gì bạn đang làm để làm ...

Trong trường hợp của tôi, sử dụng 365 thay vào đó [12*30] và "30" làm chiều dài tháng trung bình, giảm lỗi trong đầu ra có thể sử dụng được.

function DateIntervalToSec[$start,$end]{ // as datetime object returns difference in seconds
    $diff = $end->diff[$start];
    $diff_sec = $diff->format['%r'].[ // prepend the sign - if negative, change it to R if you want the +, too
                [$diff->s]+ // seconds [no errors]
                [60*[$diff->i]]+ // minutes [no errors]
                [60*60*[$diff->h]]+ // hours [no errors]
                [24*60*60*[$diff->d]]+ // days [no errors]
                [30*24*60*60*[$diff->m]]+ // months [???]
                [365*24*60*60*[$diff->y]] // years [???]
                ];
    return $diff_sec;
}

Lưu ý rằng lỗi có thể là 0, nếu số lượng "trung bình" được dành cho Diff. Các tài liệu PHP không nói về điều này ... trong trường hợp xấu, lỗi có thể là:

  • 0 giây nếu khác nhau được áp dụng cho khoảng trống thời gian 1 tháng
  • 0 đến 14 ngày nếu khác nhau được áp dụng cho khoảng trống thời gian> 1 năm

Tôi thích cho rằng ai đó đã quyết định xem xét "M" là 30 ngày và "y" là 365, tính phí "D" với sự khác biệt khi "Diff" đi bộ vào 30 tháng tháng ...

Nếu ai đó biết điều gì đó nhiều hơn về điều này và có thể cung cấp tài liệu chính thức, được chào đón!

Theo mặc định, không có phương pháp nào có sẵn trên lớp DateTime hoặc DateInterval để có được sự khác biệt giữa hai đối tượng DateTime tính bằng giây. Do đó, bạn có thể có được sự khác biệt của 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 để có số giây giữa hai ngày

Chúng ta chỉ có thể so sánh dấu thời gian của hai ngày để có được sự khác biệt trong vài 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 so sánh dấu thời gian có thể dẫn đến các vấn đề với ngày trước năm 1970 và sau năm 2038.

Tính toán 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

Tính toán hoạt động theo cách sau:

  • Sử dụng ký tự định dạng %r, thêm dấu trừ khi kết quả là âm;
  • Sử dụng ký tự định dạng
    $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
    
    0 cho chúng ta tổng số ngày giữa hai ngày;
  • Sử dụng định dạng
    $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
    
    1 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 số ngày thành vài ngày bằng cách nhân nó với giờ trong một ngày, vài phút trong một giờ và vài giây trong một phút [tức là
    $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
    
    2];
  • Việc tính toán trong bước cuối cùng không tính đến số giờ, phút và giây trong chênh lệch ngày [vì chúng không được bao gồm trong định dạng ____10]. Để bao gồm những thứ đó, chúng tôi chỉ cần sử dụng các thuộc tính giờ, phút và thứ hai có sẵn trên đối tượng DateInterval và chuyển chúng thành vài 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 ngày 01 tháng 1 năm 2021. Vui lòng thể hiện tình yêu và sự hỗ trợ của bạn bằng cách chia sẻ bài đăng này.

Trang chủ & nbsp; & nbsp; Cách nhận chênh lệch thời gian giữa hai lần dữ liệu trong vài phút bằng cách sử dụng PHP

Có hai cách để có được sự khác biệt về thời gian trong phút với PHP.

1. Sử dụng lớp DateTime PHP để tính toán chênh lệch giữa hai lần ngày. Phương pháp diff [] của lớp DateTime tạo ra một đối tượng DateInterval tính toán chênh lệch giữa hai đối tượng ngày/thời gian theo thời gian [tổng số ngày, năm, tháng, ngày, giờ, phút, giây, v.v.]. Use the PHP DateTime class to calculate the difference between two date-times. The diff[] method of DateTime class creates a DateInterval object that calculates the difference between two date/time objects in time [total days, years, months, days, hours, minutes, seconds, etc.].

$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 theo phút:

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

echo

'Diff in Minutes: '.$total_minutes;

2. Bạn có thể sử dụng hàm strtotime [] để có được chênh lệch thời gian giữa hai ngày [dữ liệu] trong vài phút bằng PHP. You can use strtotime[] function to get the time difference between two dates [DateTimes] in minutes using PHP.

Bài Viết Liên Quan

Chủ Đề