Hướng dẫn how convert seconds to hours minutes and seconds in php? - Làm thế nào để chuyển đổi giây sang giờ phút và giây trong php?

Giải pháp từ: https://gist.github.com/stevejobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b

Mã này tránh các cuộc gọi chức năng tẻ nhạt và việc xây dựng chuỗi từng mảnh càng nhiều càng tốt, và các chức năng lớn và cồng kềnh mà mọi người đang thực hiện cho việc này.

Nó trả về một đầu ra ở định dạng "1H05M00S" và sử dụng các số 0 hàng đầu trong vài phút và giây, miễn là một thành phần thời gian khác không khác đi trước chúng.

Nó cũng bỏ qua tất cả các thành phần hàng đầu trống để tránh cung cấp cho bạn thông tin vô dụng như "0H00M01S" (thay vào đó sẽ hiển thị là "1s").

Kết quả ví dụ: "1S", "1M00S", "19M08S", "1H00M00S", "4H08M39S".

$duration = 1; // values 0 and higher are supported!
$converted = [
    'hours' => floor( $duration / 3600 ),
    'minutes' => floor( ( $duration / 60 ) % 60 ),
    'seconds' => ( $duration % 60 )
];
$result = ltrim( sprintf( '%02dh%02dm%02ds', $converted['hours'], $converted['minutes'], $converted['seconds'] ), '0hm' );
if( $result == 's' ) { $result = '0s'; }

Nếu bạn muốn làm cho mã thậm chí ngắn hơn (nhưng không thể đọc được), bạn có thể tránh mảng

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
9 và thay vào đó đặt các giá trị trực tiếp trong cuộc gọi Sprintf (), như sau:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }

Thời lượng phải là 0 hoặc cao hơn trong cả hai phần mã ở trên. Thời lượng tiêu cực không được hỗ trợ. Nhưng bạn có thể xử lý các thời lượng âm bằng cách sử dụng mã thay thế sau: Thay vào đó:

$duration = -493; // negative values are supported!
$wasNegative = FALSE;
if( $duration < 0 ) { $wasNegative = TRUE; $duration = abs( $duration ); }
$converted = [
    'hours' => floor( $duration / 3600 ),
    'minutes' => floor( ( $duration / 60 ) % 60 ),
    'seconds' => ( $duration % 60 )
];
$result = ltrim( sprintf( '%02dh%02dm%02ds', $converted['hours'], $converted['minutes'], $converted['seconds'] ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
if( $wasNegative ) { $result = "-{$result}"; }
// $result is now "-8m13s"

Giả sử bạn đang chạy một quá trình chạy trong nền. Nó tốt hơn để không để người dùng mất kiên nhẫn và nói với họ khi nào nó sẽ kết thúc. & Nbsp; Nhưng, bạn có thời gian còn lại trong & nbsp; giây. Nếu chúng tôi hiển thị người dùng:seconds. If we show the user :

567 seconds to complete

Anh ấy/cô ấy (người dùng) sẽ phải lấy máy tính và chuyển đổi thành vài phút hoặc hàng giờ. Hoặc nếu anh chàng/gal không phải là một thiên tài toán học, anh ta sẽ đóng UI và nói "Cái quái gì vậy?"

Điểm chính trong UI là

Don't irritate the user

Đánh dấu lời của tôi: "Bạn không nên làm cho người dùng tức giận".

Hướng dẫn how convert seconds to hours minutes and seconds in php? - Làm thế nào để chuyển đổi giây sang giờ phút và giây trong php?

Dưới đây là một chức năng đơn giản để chuyển đổi giây sang giờ, phút và giây riêng biệt hoặc trộn lẫn với nhau:

function secToHR($seconds) {
  $hours = floor($seconds / 3600);
  $minutes = floor(($seconds / 60) % 60);
  $seconds = $seconds % 60;
  return "$hours:$minutes:$seconds";
}

Nếu bạn đang tự hỏi tại sao tôi chọn Sectohr làm tên hàm, thì đó là viết tắt của & nbsp; giây để có thể đọc được của con người.secToHR as the function name, it’s the abbreviation of Seconds to Human Readable.

Hoặc nếu bạn muốn hiển thị như thế này:

1 hour, 20 minutes remaining
10 minutes, 20 seconds remaining
15 seconds remaining

Sau đó, thay thế chức năng & nbsp; return bằng này:return function with this :

return $hours > 0 ? "$hours hours, $minutes minutes remaining" : ($minutes > 0 ? "$minutes minutes, $seconds seconds remaining" : "$seconds seconds remaining");

Btw, tôi sẽ đề nghị bạn làm điều đó như ở trên ^, bởi vì nó thân thiện hơn với người dùng.

Cách sử dụng

Đơn giản như nó là:

/**
 * Function with 'h:m:s' form as return value
 */
echo secToHR(560);
echo secToHR(10950);
/**
 * Function with 'remaining' in return value
 */
echo secToHR();

Và các đầu ra tương ứng:

0:9:20
3:2:30
9 minutes, 20 seconds remaining
3 hours, 2 minutes remaining

Tôi đã sử dụng điều này trong ứng dụng tải xuống như tôi đã đề cập trong bài trước.

Chuyển đổi số thứ hai thành chuỗi được định dạng giờ và phút giữa hai điểm thời gian khác nhau là khá dễ dàng.

Dưới đây là một đoạn mã đơn giản có thể giúp bạn thực hiện và xuất trình chuỗi được cung cấp theo yêu cầu.

Hàm số

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
0

Cách sử dụng

Ví dụ 1:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
1

Result:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
2

Ví dụ 2:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
3

Result:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
4

Ví dụ 3:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
5

Result:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
6

Ví dụ 4:

Điểm thời gian khác nhau.

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
7

Result:

$duration = 1; // values 0 and higher are supported!
$result = ltrim( sprintf( '%02dh%02dm%02ds', floor( $duration / 3600 ), floor( ( $duration / 60 ) % 60 ), ( $duration % 60 ) ), '0hm' );
if( $result == 's' ) { $result = '0s'; }
8

Sửa đổi lần cuối: ngày 22 tháng 7 năm 2019

Tác giả

Làm thế nào để chuyển đổi giây thành vài phút và giây trong PHP?

Hàm Php Convert_Seconds ($ Seconds) {$ dt1 = new DateTime ("@0"); $ dt2 = new DateTime ("@$ giây"); trả về $ dt1-> diff ($ dt2)-> định dạng (' %một ngày, %h giờ, %i phút và %s giây'); } echo convert_seconds (200000).

Làm thế nào để bạn chuyển đổi giây sang vài phút và giây?

Vì có 3.600 giây trong một giờ, nên cách dễ nhất để chuyển đổi giây đến vài giờ là chia cho 3.600.Chẳng hạn, 4.500 giây chia cho 3.600 là 1,25 giờ.Nếu bạn kết thúc với một phần nhỏ của một giờ và muốn chuyển đổi nó thành phút, nhân tỷ lệ này với 60.divide by 3,600. For instance, 4,500 seconds divided by 3,600 is 1.25 hours. If you end up with a fraction of an hour and want to convert it into minutes, multiply the fraction by 60.

Làm thế nào để chuyển đổi giây thành HH MM SS trong PHP?

Chuyển đổi thành HH: MM: SS định dạng trong Php - Stack Overflow ...
formattime (123) => 2m 3s ..
Formattime (7400) => 2H 3M 20s ..
formattime (999999) => 11d 13h 46m 39s ..

Làm thế nào để chuyển đổi số thành giờ và phút trong PHP?

Làm thế nào để chuyển đổi các phút thành giờ trong PHP ?..
if ($ Time <1) {.
return;.
$ giờ = sàn ($ Time / 60) ;.
$ phút = ($ thời gian % 60) ;.
Trả lại Sprintf ($ Định dạng, $ Giờ, $ phút) ;.