जवाबों:
आप gmdate()
फ़ंक्शन का उपयोग कर सकते हैं :
echo gmdate("H:i:s", 685);
datetime
... इसलिए यदि हम परिणाम की उम्मीद करते हैं> 24 घंटे यह काम नहीं करेगा। इसके अलावा अगर हमें कुछ नकारात्मक परिणाम की आवश्यकता है (उदाहरण के लिए ऑफसेट के साथ काम करना) तो यह काम नहीं करेगा। -1
विवरणों की
echo gmdate("z H:i:s", 685);
z का उपयोग कर सकते हैं , वर्ष में दिनों की मात्रा 0. से शुरू होती है। आप स्पष्ट रूप से अपनी विशिष्ट आवश्यकताओं को पूरा करने के लिए php तिथि मैनुअल की समीक्षा कर सकते हैं।
एक घंटा 3600 सेकेंड का है, एक मिनट 60 सेकेंड का है इसलिए नहीं:
<?php
$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;
echo "$hours:$minutes:$seconds";
?>
जो पैदा करता है:
$ php file.php
0:11:25
(मैंने इसे बहुत परीक्षण नहीं किया है, इसलिए फर्श या इसके साथ त्रुटियां हो सकती हैं)
printf("%02d:%02d:%02d", $hours, $minutes, $seconds);
sprintf
इसे प्रिंट करने के बजाय मान वापस करने के लिए उपयोग करें।
हेयर यू गो
function format_time($t,$f=':') // t = seconds, f = separator
{
return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f, ($t/60)%60, $f, $t%60);
}
echo format_time(685); // 00:11:25
return ($t< 0 ? '-' : '') . sprintf("%02d%s%02d%s%02d", floor(abs($t)/3600), $f, (abs($t)/60)%60, $f, abs($t)%60); }
फ़ंक्शन का उपयोग gmdate()
केवल तभी करें जब सेकंड 86400
(1 दिन) से कम हों :
$seconds = 8525;
echo gmdate('H:i:s', $seconds);
# 02:22:05
देखें: gmdate ()
सेकंड्स को 'पैर' की सीमा में बदलें। * :
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
देखें: फर्श () , स्प्रिंटफ () , अंकगणित ऑपरेटर
DateTime
विस्तार का उदाहरण उपयोग :
$seconds = 8525;
$zero = new DateTime("@0");
$offset = new DateTime("@$seconds");
$diff = $zero->diff($offset);
echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s);
# 02:22:05
देखें: DateTime :: __ निर्माण () , DateTime :: संशोधित () , क्लोन , स्प्रिंटफ ()
परिणाम का-838:59:59
838:59:59
MySQL उदाहरण सीमा उस समय डेटा प्रकार के लिए विवश है, जो निम्न से है :
SELECT SEC_TO_TIME(8525);
# 02:22:05
देखें: SEC_TO_TIME
PostgreSQL उदाहरण:
SELECT TO_CHAR('8525 second'::interval, 'HH24:MI:SS');
# 02:22:05
अन्य समाधान उपयोग करते हैं gmdate
, लेकिन किनारे के मामलों में विफल रहते हैं जहां आपके पास 86400 सेकंड से अधिक है। इसके आस-पास जाने के लिए, हम केवल घंटों की संख्या की स्वयं गणना कर सकते हैं, फिर gmdate
शेष सेकंड को मिनट / सेकंड में गणना कर सकते हैं।
echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);
इनपुट: 6030
आउटपुट:1:40:30
इनपुट: 2000006030
आउटपुट:555557:13:50
// TEST
// 1 Day 6 Hours 50 Minutes 31 Seconds ~ 111031 seconds
$time = 111031; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
echo "{$days}d {$hours}h {$minutes}m {$seconds}s"; // 1d 6h 50m 31s
gmdate("H:i:s", no_of_seconds);
1 दिन (एक दिन में सेकंड) से अधिक होने पर H:i:s
प्रारूप में समय नहीं देगा no_of_seconds
।
यह दिन के मूल्य की उपेक्षा करेगा और केवल देगाHour:Min:Seconds
उदाहरण के लिए:
gmdate("H:i:s", 89922); // returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
यहां एक लाइनर है जो नकारात्मक सेकंड और 1 दिन से अधिक मूल्य के सेकंड संभालता है।
sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
उदाहरण के लिए:
$seconds= -24*60*60 - 2*60*60 - 3*60 - 4; // minus 1 day 2 hours 3 minutes 4 seconds
echo sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
आउटपुट: -26: 03: 04
यदि आप स्वीकृत उत्तर या लोकप्रिय लोगों को पसंद नहीं करते हैं, तो यह प्रयास करें
function secondsToTime($seconds_time)
{
if ($seconds_time < 24 * 60 * 60) {
return gmdate('H:i:s', $seconds_time);
} else {
$hours = floor($seconds_time / 3600);
$minutes = floor(($seconds_time - $hours * 3600) / 60);
$seconds = floor($seconds_time - ($hours * 3600) - ($minutes * 60));
return "$hours:$minutes:$seconds";
}
}
secondsToTime(108620); // 30:10:20
किसी सरणी को वापस करने के लिए इस तरह फ़ंक्शन लिखें
function secondsToTime($seconds) {
// extract hours
$hours = floor($seconds / (60 * 60));
// extract minutes
$divisor_for_minutes = $seconds % (60 * 60);
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
// return the final array
$obj = array(
"h" => (int) $hours,
"m" => (int) $minutes,
"s" => (int) $seconds,
);
return $obj;
}
तो बस इस तरह समारोह कहते हैं:
secondsToTime(100);
आउटपुट है
Array ( [h] => 0 [m] => 1 [s] => 40 )
देख:
/**
* Convert number of seconds into hours, minutes and seconds
* and return an array containing those values
*
* @param integer $inputSeconds Number of seconds to parse
* @return array
*/
function secondsToTime($inputSeconds) {
$secondsInAMinute = 60;
$secondsInAnHour = 60 * $secondsInAMinute;
$secondsInADay = 24 * $secondsInAnHour;
// extract days
$days = floor($inputSeconds / $secondsInADay);
// extract hours
$hourSeconds = $inputSeconds % $secondsInADay;
$hours = floor($hourSeconds / $secondsInAnHour);
// extract minutes
$minuteSeconds = $hourSeconds % $secondsInAnHour;
$minutes = floor($minuteSeconds / $secondsInAMinute);
// extract the remaining seconds
$remainingSeconds = $minuteSeconds % $secondsInAMinute;
$seconds = ceil($remainingSeconds);
// return the final array
$obj = array(
'd' => (int) $days,
'h' => (int) $hours,
'm' => (int) $minutes,
's' => (int) $seconds,
);
return $obj;
}
इसे इस्तेमाल करे:
date("H:i:s",-57600 + 685);
Http://bytes.com/topic/php/answers/3917-seconds-converted-hh-mm-ss से लिया गया
Gmtdate () फ़ंक्शन ने मेरे लिए काम नहीं किया क्योंकि मैं एक परियोजना पर काम कर रहे घंटों पर नज़र रख रहा था और अगर यह 24 घंटे से अधिक है, तो आपको 24 घंटे के बाद घटाए जाने पर शेष राशि मिलती है। दूसरे शब्दों में 37 घंटे 13 घंटे बन जाते हैं। (सभी जैसा कि ऊपर Glavic द्वारा कहा गया है - आपके उदाहरणों के लिए धन्यवाद!) यह एक अच्छी तरह से काम किया है:
Convert seconds to format by 'foot' no limit :
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
यह फ़ंक्शन मेरे लिए उपयोगी है, आप इसे बढ़ा सकते हैं:
function formatSeconds($seconds) {
if(!is_integer($seconds)) {
return FALSE;
}
$fmt = "";
$days = floor($seconds / 86400);
if($days) {
$fmt .= $days."D ";
$seconds %= 86400;
}
$hours = floor($seconds / 3600);
if($hours) {
$fmt .= str_pad($hours, 2, '0', STR_PAD_LEFT).":";
$seconds %= 3600;
}
$mins = floor($seconds / 60 );
if($mins) {
$fmt .= str_pad($mins, 2, '0', STR_PAD_LEFT).":";
$seconds %= 60;
}
$fmt .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $fmt;}
से हल: https://gist.github.com/SteveJobzniak/c91a8e2426bac5cb9b0cbc1bdbc45e4b
यह कोड थकाऊ फ़ंक्शन कॉल और टुकड़ा-दर-टुकड़ा स्ट्रिंग-बिल्डिंग से जितना संभव हो सके बचता है, और बड़े और भारी कार्य लोग इसके लिए बना रहे हैं।
यह "1h05m00s" प्रारूप का उत्पादन करता है और मिनटों और सेकंडों के लिए अग्रणी शून्य का उपयोग करता है, जब तक कि एक और गैर-शून्य समय घटक उनसे पहले न हो।
और यह आपको "0h00m01s" (इसके बजाय "1s" के रूप में दिखाई देगा) जैसी बेकार जानकारी देने से बचने के लिए सभी खाली प्रमुख घटकों को छोड़ देता है।
उदाहरण के परिणाम: "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'; }
यदि आप कोड को और भी कम (लेकिन कम पठनीय) बनाना चाहते हैं, तो आप $converted
ऐरे से बच सकते हैं और इसके बजाय मान को सीधे स्प्रिंटफ () कॉल में डाल सकते हैं, निम्नानुसार:
$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 या उससे अधिक होनी चाहिए । नकारात्मक अवधि समर्थित नहीं हैं। लेकिन आप इसके बजाय निम्नलिखित वैकल्पिक कोड का उपयोग करके नकारात्मक अवधि को संभाल सकते हैं:
$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"
gmdate()
हैक इससे भी छोटा है, लेकिन केवल 24 घंटे तक अवधि का समर्थन करता है। अगर आप gmdate ट्रिक का उपयोग करते हैं तो 24 घंटे से ऊपर की कोई भी चीज विफल हो जाएगी!
इसके लिए DateTime का उपयोग करने का एक सरल तरीका है:
$time = 60; //sec.
$now = time();
$rep = new DateTime('@'.$now);
$diff = new DateTime('@'.($now+$time));
$return = $diff->diff($rep)->format($format);
//output: 01:04:65
यह एक सरल समाधान है जो आपको प्रारूप विधि का उपयोग करने की क्षमता देता है।
जावा में आप इस तरह से उपयोग कर सकते हैं।
private String getHmaa(long seconds) {
String string;
int hours = (int) seconds / 3600;
int remainder = (int) seconds - hours * 3600;
int mins = remainder / 60;
//remainder = remainder - mins * 60;
//int secs = remainder;
if (hours < 12 && hours > 0) {
if (mins < 10) {
string = String.valueOf((hours < 10 ? "0" + hours : hours) + ":" + (mins > 0 ? "0" + mins : "0") + " AM");
} else {
string = String.valueOf((hours < 10 ? "0" + hours : hours) + ":" + (mins > 0 ? mins : "0") + " AM");
}
} else if (hours >= 12) {
if (mins < 10) {
string = String.valueOf(((hours - 12) < 10 ? "0" + (hours - 12) : ((hours - 12) == 12 ? "0" : (hours - 12))) + ":" + (mins > 0 ? "0" + mins : "0") + ((hours - 12) == 12 ? " AM" : " PM"));
} else {
string = String.valueOf(((hours - 12) < 10 ? "0" + (hours - 12) : ((hours - 12) == 12 ? "0" : (hours - 12))) + ":" + (mins > 0 ? mins : "0") + ((hours - 12) == 12 ? " AM" : " PM"));
}
} else {
if (mins < 10) {
string = String.valueOf("0" + ":" + (mins > 0 ? "0" + mins : "0") + " AM");
} else {
string = String.valueOf("0" + ":" + (mins > 0 ? mins : "0") + " AM");
}
}
return string;
}
function timeToSecond($time){
$time_parts=explode(":",$time);
$seconds= ($time_parts[0]*86400) + ($time_parts[1]*3600) + ($time_parts[2]*60) + $time_parts[3] ;
return $seconds;
}
function secondToTime($time){
$seconds = $time % 60;
$seconds<10 ? "0".$seconds : $seconds;
if($seconds<10) {
$seconds="0".$seconds;
}
$time = ($time - $seconds) / 60;
$minutes = $time % 60;
if($minutes<10) {
$minutes="0".$minutes;
}
$time = ($time - $minutes) / 60;
$hours = $time % 24;
if($hours<10) {
$hours="0".$hours;
}
$days = ($time - $hours) / 24;
if($days<10) {
$days="0".$days;
}
$time_arr = array($days,$hours,$minutes,$seconds);
return implode(":",$time_arr);
}
वैसे मुझे कुछ ऐसा चाहिए था जो सेकंड को घंटों मिनट और सेकंड में कम कर दे, लेकिन 24 घंटे से अधिक हो जाएगा, और दिनों में और कमी नहीं होगी।
यहां एक सरल कार्य है जो काम करता है। आप शायद इसे सुधार सकते हैं ... लेकिन यहाँ यह है:
function formatSeconds($seconds)
{
$hours = 0;$minutes = 0;
while($seconds >= 60){$seconds -= 60;$minutes++;}
while($minutes >= 60){$minutes -=60;$hours++;}
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $hours.":".$minutes.":".$seconds;
}
$given = 685;
/*
* In case $given == 86400, gmdate( "H" ) will convert it into '00' i.e. midnight.
* We would need to take this into consideration, and so we will first
* check the ratio of the seconds i.e. $given:$number_of_sec_in_a_day
* and then after multiplying it by the number of hours in a day (24), we
* will just use "floor" to get the number of hours as the rest would
* be the minutes and seconds anyways.
*
* We can also have minutes and seconds combined in one variable,
* e.g. $min_sec = gmdate( "i:s", $given );
* But for versatility sake, I have taken them separately.
*/
$hours = ( $given > 86399 ) ? '0'.floor( ( $given / 86400 ) * 24 )-gmdate( "H", $given ) : gmdate("H", $given );
$min = gmdate( "i", $given );
$sec = gmdate( "s", $given );
echo $formatted_string = $hours.':'.$min.':'.$sec;
इसे एक समारोह में बदलने के लिए:
function getHoursFormat( $given ){
$hours = ( $given > 86399 ) ? '0'.floor( ( $given / 86400 ) * 24 )-gmdate( "H", $given ) : gmdate("H", $given );
$min = gmdate( "i", $given );
$sec = gmdate( "s", $given );
$formatted_string = $hours.':'.$min.':'.$sec;
return $formatted_string;
}
यदि आपको जावास्क्रिप्ट में ऐसा करने की आवश्यकता है, तो आप इसे कोड की सिर्फ एक पंक्ति में कर सकते हैं, जैसा कि यहां बताया गया है कि जावास्क्रिप्ट के साथ HH-MM-SS में सेकेंड कन्वर्ट करें । उस SECONDS को बदलें , जिसे आप कनवर्ट करना चाहते हैं।
var time = new Date(SECONDS * 1000).toISOString().substr(11, 8);
यदि आप YouTube आदि की ऑडियो / वीडियो अवधि बनाना चाहते हैं, तो आप ऐसा कर सकते हैं:
($seconds >= 60) ? ltrim(gmdate("H:i:s", $seconds), ":0") : gmdate("0:s", $seconds)
तार जैसे लौटेंगे:
55.55 => '0:55'
100 => '1:40'
शायद समय के लिए अच्छी तरह से काम नहीं करेगा> = 24 घंटे।
यह करने के लिए एक सुंदर तरीका है:
function time_converter($sec_time, $format='h:m:s'){
$hour = intval($sec_time / 3600) >= 10 ? intval($sec_time / 3600) : '0'.intval($sec_time / 3600);
$minute = intval(($sec_time % 3600) / 60) >= 10 ? intval(($sec_time % 3600) / 60) : '0'.intval(($sec_time % 3600) / 60);
$sec = intval(($sec_time % 3600) % 60) >= 10 ? intval(($sec_time % 3600) % 60) : '0'.intval(($sec_time % 3600) % 60);
$format = str_replace('h', $hour, $format);
$format = str_replace('m', $minute, $format);
$format = str_replace('s', $sec, $format);
return $format;
}
बस के मामले में किसी और को यह अच्छी तरह से स्वरूपित करने के लिए एक साधारण समारोह की तलाश में है (मुझे पता है कि यह वह प्रारूप नहीं है जिसे ओपी ने पूछा है), यह वही है जो मैं अभी आया हूं। इस कोड के लिए @mughal पर धन्यवाद आधारित था।
function format_timer_result($time_in_seconds){
$time_in_seconds = ceil($time_in_seconds);
// Check for 0
if ($time_in_seconds == 0){
return 'Less than a second';
}
// Days
$days = floor($time_in_seconds / (60 * 60 * 24));
$time_in_seconds -= $days * (60 * 60 * 24);
// Hours
$hours = floor($time_in_seconds / (60 * 60));
$time_in_seconds -= $hours * (60 * 60);
// Minutes
$minutes = floor($time_in_seconds / 60);
$time_in_seconds -= $minutes * 60;
// Seconds
$seconds = floor($time_in_seconds);
// Format for return
$return = '';
if ($days > 0){
$return .= $days . ' day' . ($days == 1 ? '' : 's'). ' ';
}
if ($hours > 0){
$return .= $hours . ' hour' . ($hours == 1 ? '' : 's') . ' ';
}
if ($minutes > 0){
$return .= $minutes . ' minute' . ($minutes == 1 ? '' : 's') . ' ';
}
if ($seconds > 0){
$return .= $seconds . ' second' . ($seconds == 1 ? '' : 's') . ' ';
}
$return = trim($return);
return $return;
}
भविष्य में जिस किसी को भी इसकी तलाश है, यह प्रारूप को शुरुआती पोस्टर के लिए कहा गया है।
$init = 685;
$hours = floor($init / 3600);
$hrlength=strlen($hours);
if ($hrlength==1) {$hrs="0".$hours;}
else {$hrs=$hours;}
$minutes = floor(($init / 60) % 60);
$minlength=strlen($minutes);
if ($minlength==1) {$mins="0".$minutes;}
else {$mins=$minutes;}
$seconds = $init % 60;
$seclength=strlen($seconds);
if ($seclength==1) {$secs="0".$seconds;}
else {$secs=$seconds;}
echo "$hrs:$mins:$secs";
<?php
$time=3*3600 + 30*60;
$year=floor($time/(365*24*60*60));
$time-=$year*(365*24*60*60);
$month=floor($time/(30*24*60*60));
$time-=$month*(30*24*60*60);
$day=floor($time/(24*60*60));
$time-=$day*(24*60*60);
$hour=floor($time/(60*60));
$time-=$hour*(60*60);
$minute=floor($time/(60));
$time-=$minute*(60);
$second=floor($time);
$time-=$second;
if($year>0){
echo $year." year, ";
}
if($month>0){
echo $month." month, ";
}
if($day>0){
echo $day." day, ";
}
if($hour>0){
echo $hour." hour, ";
}
if($minute>0){
echo $minute." minute, ";
}
if($second>0){
echo $second." second, ";
}
seconds
को एकdate/time
घंटे की राशि में बदलना चाहते हैं : मिनट: सेकंड?