Tính ngày php

PHP cung cấp một số phương pháp để tính toán sự khác biệt giữa hai ngày. Bài viết này sẽ giải thích cách tính chênh lệch ngày bằng PHP phiên bản 5. 3 cũng như cách tiếp cận mới nhất và chính xác nhất cho phiên bản mới nhất [>5. 3]

Bạn cũng có thể xem bài viết này về cách lấy ngày cuối cùng của Tháng trong PHP

Sự khác biệt giữa hai ngày bằng PHP strtotime[]

Hàm strtotime dùng được cho các phiên bản PHP dưới 5. 3. Hai ngày được chuyển đổi thành thời gian UNIX và số giây của chúng được tính bằng hàm strtotime[]. Điều này làm cho việc tính toán các kỹ thuật khác nhau sử dụng giây trở nên đơn giản hơn. Hàm chấp nhận tham số chuỗi tiếng Anh hiển thị mô tả ngày-giờ

Thí dụ

$firstDate = "2019-01-01";
$secondDate = "2020-03-04";

$dateDifference = abs[strtotime[$secondDate] - strtotime[$firstDate]];

$years  = floor[$dateDifference / [365 * 60 * 60 * 24]];
$months = floor[[$dateDifference - $years * 365 * 60 * 60 * 24] / [30 * 60 * 60 * 24]];
$days   = floor[[$dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24] / [60 * 60 * 24]];

echo $years." year,  ".$months." months and ".$days." days";

//output: 1 year, 2 months and 3 days

Ví dụ đã nói ở trên sử dụng một số hàm, cụ thể là strtotime và abs[], để tính toán sự khác biệt giữa hai ngày []

Ngày được chuyển đổi thành giây UNIX bằng hàm strtotime[] và giá trị tuyệt đối của ngày đầu tiên được lấy bằng hàm abs[]

Số giây được làm tròn thành số nguyên gần nhất bằng hàm floor[]

Bạn có thể chạy tập lệnh python từ php không?

Chia kết quả cho sự khác biệt để có được năm bằng cách nhân 365 ngày với 60 phút, 60 giây và 24 giờ

Để có được các tháng, hãy chia chênh lệch ngày cho 30 ngày, 60 phút, 60 giây và 24 giờ. Kết quả sau đó được nhân với 365 ngày, 60 phút, 60 giây và 24 giờ để có được các tháng

Sau đó, nhân 60 phút, 60 giây và 24 giờ để có chênh lệch ngày và chia cho chênh lệch ngày bằng cách sử dụng tích của năm, 365 ngày, 60 phút, 60 giây và 24 giờ, cũng như

Bước cuối cùng là kết hợp mọi thứ vào một biến và in ra tổng chênh lệch

Các đối tượng DateTime[] và DateInterval[] trong PHP

Đối với phiên bản php trên 5. 2 sử dụng các đối tượng DateTime[] và DateInterval[]. Phương pháp này sử dụng cách tiếp cận hướng đối tượng để xác định sự khác biệt giữa hai ngày;

Thí dụ

$firstDate  = new DateTime["2019-01-01"];
$secondDate = new DateTime["2020-03-04"];
$intvl = $firstDate->diff[$secondDate];

echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day"; 
echo "\n";
// Total amount of days
echo $intvl->days . " days ";

//output: 1 year, 2 months and 1 day
//        428 days

Trong ví dụ đã nói ở trên, các đối tượng DateTime[] và DateInterval[] làm cho mọi thứ đơn giản hơn so với việc sử dụng hàm strtotime[] và các hàm và tính toán bổ sung

đầu tiên, sử dụng DateTime mới để khai báo ngày tháng []. Sau đó, sử dụng đối tượng DateInterval[] diff[] vào ngày đầu tiên để lấy giá trị nguyên của chênh lệch và gửi ngày thứ hai dưới dạng tham số

Cuối cùng, chỉ cần sử dụng đối tượng y để có được năm. Trong tháng, hãy sử dụng m và trong ngày, hãy sử dụng d

Sự kết luận

Chúng ta có thể sử dụng các Đối tượng DateTime và DateInterval trong PHP để tìm sự khác biệt giữa hai ngày. Hai chức năng này hoạt động trong phiên bản PHP mới nhất và cả trong các phiên bản trên 5. 2. Tuy nhiên nếu bạn đang sử dụng PHP phiên bản 5. 2 trở xuống, thì bạn có thể sử dụng hàm strtotime

Nếu bạn muốn tạo một vết lùi, bạn đang tìm kiếm debug_backtrace và/hoặc debug_print_backtrace

Ví dụ, cái đầu tiên sẽ giúp bạn có được một mảng như thế này [trích dẫn hướng dẫn]

array[2] {
[0]=>
array[4] {
    ["file"] => string[10] "/tmp/a.php"
    ["line"] => int[10]
    ["function"] => string[6] "a_test"
    ["args"]=>
    array[1] {
      [0] => &string[6] "friend"
    }
}
[1]=>
array[4] {
    ["file"] => string[10] "/tmp/b.php"
    ["line"] => int[2]
    ["args"] =>
    array[1] {
      [0] => string[10] "/tmp/a.php"
    }
    ["function"] => string[12] "include_once"
  }
}

Họ dường như sẽ không xóa bộ đệm I/O, nhưng bạn có thể tự làm điều đó bằng cách xóa và/hoặc ob_flush

Nếu bạn muốn tạo một vết lùi, bạn đang tìm kiếm debug_backtrace và/hoặc debug_print_backtrace

Ví dụ, cái đầu tiên sẽ giúp bạn có được một mảng như thế này [trích dẫn hướng dẫn]

array[2] {
[0]=>
array[4] {
    ["file"] => string[10] "/tmp/a.php"
    ["line"] => int[10]
    ["function"] => string[6] "a_test"
    ["args"]=>
    array[1] {
      [0] => &string[6] "friend"
    }
}
[1]=>
array[4] {
    ["file"] => string[10] "/tmp/b.php"
    ["line"] => int[2]
    ["args"] =>
    array[1] {
      [0] => string[10] "/tmp/a.php"
    }
    ["function"] => string[12] "include_once"
  }
}

Họ dường như sẽ không xóa bộ đệm I/O, nhưng bạn có thể tự làm điều đó bằng cách xóa và/hoặc ob_flush

Chủ Đề