Hướng dẫn khoảng cách php

Việc tạo ra Datetime để phục vụ cho tính toán ngày tháng, show ngày tháng trong PHP đã quá dễ dàng. Tuy nhiên, nếu cho 2 mốc thời gian và tính khoảng cách giữa 2 ngày đó thì không phải ai cũng nghĩ ra.

Dưới đây, Trung Trịnh .Com sẽ hướng dẫn các bạn tính khoảng cách giữa 2 ngày, khoảng cách giữ một ngày trong quá khứ đến hiện tại, khoảng cách một ngày trong quá khứ đến một ngày trong tương lai.

1. Tính khoảng cách giữa 2 ngày đơn giản nhất

Thuật toán được mô tả như sau :

Dùng hàm strtotime[] để tính ra số giây được tính từ thời điểm 01/01/1970 00:00:00 GMT đến hiện tại của 2 ngày được nhập vào.

Dùng hàm abs[] để lấy giá trị tuyệt đối của hiệu 2 ngày đó [vì không biết ngày nào lớn hơn].

Lấy kết quả chia cho tổng số giây trong 1 ngày [24 x 60 x 60 = 86400].

Cuối cùng sử dụng hàm floor[] để làm tròn số ngày trả về.

Và đây là đoạn code:

Kết quả cho ra: 9

2. Tính khoảng cách giữa 2 ngày theo đơn vị ngày, tháng, năm

Các bạn có thể thấy kết quả trả về của đoạn code ở trên là khoảng cách [số ngày] giữa 2 ngày nhập vào. Câu hỏi đặt ra làm thế nào tính chính xác khoảng cách đó ra ngày, tháng, năm. Nói một cách dễ hiểu là, giả sử tôi nhập vào 2 ngày là 06/07/2020 và 15/07/2020. Vậy hai ngày đó cách nhau bao nhiêu năm, tháng và ngày ?

Cách 1

Cách 2 [PHP 5.3+]

Và kết quả

0 năm, 0 tháng, 9 ngày

3. Trả về số ngày, tháng, năm, giờ, phút, giây giữa 2 ngày

Tương tự như vậy, đoạn code dưới đây sẽ tính chính xác khoảng cách giữa 2 ngày ra định dạng ngày, tháng, năm, giờ, phút, giây.

Và kết quả

1 năm, 1 tháng, 2 ngày, 14 giờ, 59 phút, 1 giây

Bạn đang xem bài viết tại chuyên mục PHP / MYSQL / MYSQLi của Website Trung Trịnh. Nếu thấy bổ ích, hãy bấm like và share để chia sẻ cho mọi người cùng xem nhé!

Ngày nay, việc sử dụng google maps đã quá dễ dàng và thân thiện, và nó cũng được sử dụng trong nhiều mục đích khác nhau. Tất cả chúng đều dựa vào các toạ độ mà google cung cấp cho ta, một điểm google cho ta một dãy số ví dụ như [10.867849, 106.620332] nó được cách nhau bằng dấu [,] trước dấu [,] là toạ độ latitude, sau dấu [,] là toạ độ longitude. Vì một lý do gì đó các bạn cần tính khoảng cách giữa 2 điểm trên google các bạn sẽ làm thế nào trong PHP?

Sau đây mình xin chia sẽ một function nhỏ để thực hiện điều trên:

function getDistanceBetweenPointsNew[$latitude1, $longitude1, $latitude2, $longitude2]{
$theta = $longitude1 - $longitude2;
$miles = [sin[deg2rad[$latitude1]] * sin[deg2rad[$latitude2]]] + [cos[deg2rad[$latitude1]] * cos[deg2rad[$latitude2]] * cos[deg2rad[$theta]]];
$miles = acos[$miles];
$miles = rad2deg[$miles];$miles = $miles * 60 * 1.1515;
$feet = $miles * 5280;
$yards = $feet / 3;
$kilometers = $miles * 1.609344;
$meters = $kilometers * 1000;
return compact['miles','feet','yards','kilometers','meters'];
}

Để sử dụng hàm trên ta có ví dụ sau:

Mình có 2 điểm như sau, và sẽ tính khoảng cách giữa 2 điểm này:

  • Thảo cầm Viên Sài Gòn[10.7861501,106.7049594]
  • Nhà thờ Đức Bà[10.7786746,106.6992025]

Chúng ta sẽ đưa 2 điểm này vào mảng:

$point1 = array['lat' => 10.7861501, 'long' => 106.7049594];//Thảo cầm viên
$point2 = array['lat' => 10.7786746, 'long' => 106.6992025];//Nhà thờ
$distance = $this->getDistanceBetweenPointsNew[$point1['lat'], $point1['long'], $point2['lat'], $point2['long']];
foreach [$distance as $unit => $value] {
echo $unit.': '.round[$value,2].'
'; }

Hàm này sẽ cho ra tổng cộng là 5 đơn vị tính khoảng cách, tuỳ nhu cầu sử dụng mà các bạn lấy ra, đương nhiên con số tính ra không hề đẹp, chúng ta có thể sử dụng các hàm trong PHP để làm tròn lại, ở đây mình sử dụng round[]. Kết quả sẽ được như sau

miles: 0.65
feet: 3419.46
yards: 1139.82
kilometers: 1.04
meters: 1042.25

[thongbao]

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

[/thongbao]

Chủ Đề