Giải pháp từ: //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 $converted
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"
Buildhome thành viên nổi tiếng Well-Known Member
Tin nhắn: 837like nhận được: 13best Câu trả lời: 0 điểm: 108
#số 8
Tin nhắn: 1Like nhận được: 0best Trả lời: 0 điểm: 0Có, tôi đã sử dụng chức năng mà bạn đã viết
JOBERLINE PEON
I have a var that have int value of seconds, such as:#9
... Phiên bản 1 dòng nhanh và bẩn:
$ giây = '150'; Echo [[$ min = sàn [$ giây/60]]
Mukeshdak peon Peon
#10
Nó không thể đơn giản hơn sau đó .________ 6
Khách mời Singahost
Tin nhắn: 30like nhận được: 0best Trả lời: 0 điểm: 0 Well-Known Member
QWERTY12 Thành viên hoạt động
Tin nhắn: 56Like nhận được: 0best Trả lời: 1 điểm: 51
Krakjoe thành viên nổi tiếng Well-Known Member
Tin nhắn: 1.795like nhận được: 141 câu trả lời nhất: 0 điểm: 135
#7
Nếu có một chức năng cho một cái gì đó, như các chuỗi định dạng chẳng hạn, bạn nên sử dụng nó, thì có ít ký hiệu hơn khi bạn sử dụng các chức năng được thử và thử nghiệm ... cộng với nó đã được các lập trình viên thiết lập nhiều hơn nhiều so với chính bạn [ các tác giả PHP] rằng đây là cách tối ưu để thực hiện một nhiệm vụ ... Peon
Buildhome thành viên nổi tiếng
#số 8
JOBERLINE PEONCó, tôi đã sử dụng chức năng mà bạn đã viết
Buildhome thành viên nổi tiếng Well-Known Member
Tin nhắn: 837like nhận được: 13best Câu trả lời: 0 điểm: 108
#6
DPFReaks, cảm ơn nhưng tôi cũng muốn "0" trước thời điểm nếu nó thấp hơn 10 phút., thanks but I also wanted "0" before the time if it's lower than 10 minutes.
Legend2, đó là những gì tôi muốn. Bạn chỉ quên thêm "S" vào VAR "thứ hai" trong dòng thứ hai của bạn, tôi đã sửa nó và bây giờ nó hoạt động rất tốt !!, that's what I wanted.
You just forgot to add "s" to the "second" var in your second line, I've fixed it and now it's working GREAT!!Krakjoe và Andrew, mã của bạn cũng là thứ tôi muốn. Rất dễ hiểu và sử dụng. Cảm ơn! and andrews, Your code is also what I wanted. Very easy to understand & usage. Thanks!
Cảm ơn tất cả bạn bè của tôi vì sự giúp đỡ nhanh chóng của bạn! Tôi đã thêm vào mỗi bạn một đại diện
I've added to each of you a RepKrakjoe thành viên nổi tiếng Well-Known Member
Tin nhắn: 1.795like nhận được: 141 câu trả lời nhất: 0 điểm: 135
#7
Nếu có một chức năng cho một cái gì đó, như các chuỗi định dạng chẳng hạn, bạn nên sử dụng nó, thì có ít ký hiệu hơn khi bạn sử dụng các chức năng được thử và thử nghiệm ... cộng với nó đã được các lập trình viên thiết lập nhiều hơn nhiều so với chính bạn [ các tác giả PHP] rằng đây là cách tối ưu để thực hiện một nhiệm vụ ...
Buildhome thành viên nổi tiếng Well-Known Member
Tin nhắn: 837like nhận được: 13best Câu trả lời: 0 điểm: 108
#số 8
Có, tôi đã sử dụng chức năng mà bạn đã viết
JOBERLINE PEON Peon
Tin nhắn: 1Like nhận được: 0best Trả lời: 0 điểm: 0
#9
... Phiên bản 1 dòng nhanh và bẩn:
$ giây = '150'; Echo [[$ min = sàn [$ giây/60]]
echo [[$min=floor[$seconds/60]]