जावास्क्रिप्ट मिनट और सेकंड के लिए सेकंड


170

यह एक आम समस्या है लेकिन मुझे यकीन नहीं है कि इसे कैसे हल किया जाए। नीचे दिया गया कोड ठीक काम करता है।

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

हालाँकि, जब मुझे 1 घंटा या 3600 सेकंड का समय मिलता है, तो यह 0 मिनट और 0 सेकंड में लौटता है। मैं इससे कैसे बच सकता हूं ताकि यह सभी मिनटों में वापस आ जाए?

धन्यवाद


Thats क्योंकि जब समय = 3600, 3600% 3600 हमेशा 0 होता है ... तो बाकी सब कुछ आपकी गणना के अनुसार 0 होगा।
MSI

जवाबों:


338

पूर्ण मिनट की संख्या प्राप्त करने के लिए, कुल सेकंड की संख्या को 60 (60 सेकंड / मिनट) से विभाजित करें:

var minutes = Math.floor(time / 60);

और शेष सेकंड प्राप्त करने के लिए, पूर्ण मिनट को 60 से गुणा करें और कुल सेकंड से घटाएं:

var seconds = time - minutes * 60;

अब यदि आप भी पूर्ण घंटे प्राप्त करना चाहते हैं, तो कुल सेकंड की संख्या को 3600 से विभाजित करें (60 मिनट / घंटा · 60 सेकंड / मिनट) पहले, फिर शेष सेकंड की गणना करें:

var hours = Math.floor(time / 3600);
time = time - hours * 3600;

फिर आप पूरे मिनट और शेष सेकंड की गणना करते हैं।

बक्शीश:

निम्न कोड का उपयोग उस समय को प्रिंट करने के लिए करें (ड्रू द्वारा सुझाए गए)

function str_pad_left(string,pad,length) {
    return (new Array(length+1).join(pad)+string).slice(-length);
}

var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);

57
'सेकंड सेकंड = समय 60%' करके शेष सेकंड प्राप्त करना थोड़ा साफ है।
एडवर्ड डिसूज़ा

11
@Radio का उपयोग कर अग्रणी शून्य जोड़ें function str_pad_left(string,pad,length){ return (new Array(length+1).join(pad)+string).slice(-length); } var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);
Dru

1
यह समाधान नकारात्मक मानों के लिए काम नहीं करेगा time। यदि आप उदाहरण के लिए इनपुट -1 सेकंड, आप -1 मिनट और 59 सेकंड वापस ...
Pylinux

5
नकारात्मक होने का क्या मतलब है time? तार्किक रूप से एक समय का अंतर हमेशा सकारात्मक होता है
mcont

4
आप सेकंड की संख्या प्राप्त करने के लिए मापांक का उपयोग कर सकते हैं, यह मेरी राय में अधिक पठनीय है। var seconds = time % 60
JCM

106

एक और फैंसी समाधान:

function fancyTimeFormat(duration)
{   
    // Hours, minutes and seconds
    var hrs = ~~(duration / 3600);
    var mins = ~~((duration % 3600) / 60);
    var secs = ~~duration % 60;

    // Output like "1:01" or "4:03:59" or "123:03:59"
    var ret = "";

    if (hrs > 0) {
        ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
    }

    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
    ret += "" + secs;
    return ret;
}

~~के लिए एक आशुलिपि है Math.floor, अधिक जानकारी के लिए इस लिंक को देखें

ऑनलाइन कोशिश करें


14
का अर्थ क्या है ~~?
19

9
यह एक बुनियादी शोरखंड है Math.floor, इस लिंक को देखें ।
लैपिन

इसका काम ठीक है ..... :) आप इस तरह से मूल्य गोल कर सकते हैं जैसे hrs = hrs.toFixed (0); mins = mins.toFixed (0); secs = secs.toFixed (0);
अब्दुल खालिक

1
इस समाधान के लिए धन्यवाद! time = math.round(time)मुझे गोल सेकंड देने के लिए मैंने पहली पंक्ति में जोड़ा ।
fotoflo

यह अधिक सही समाधान है। जैसा कि ऊपर कहा गया है, इस पृष्ठ पर सबसे अधिक वोटों वाला समाधान 180 सेकंड 2m60s के रूप में प्रदर्शित होता है।
सोंगबॉक्स

71

त्वरित सरल और इस प्रकार सेकंड में प्रारूपित करने के लिए संक्षिप्त समाधान की उम्मीद में छोड़ने वाले लोगों के लिए M:SS:

function fmtMSS(s){return(s-(s%=60))/60+(9<s?':':':0')+s}

किया गया ..
फ़ंक्शन या तो एक Numberपसंदीदा (पसंदीदा) या एक String(2 रूपांतरण 'दंड' को स्वीकार करता है, जिसे आप +फ़ंक्शन कॉल के तर्क में :) के sरूप में fmtMSS(+strSeconds)सकारात्मक पूर्णांक सेकंड का प्रतिनिधित्व करते sहुए प्रस्तुत कर सकते हैं।

उदाहरण:

fmtMSS(    0 );  //   0:00
fmtMSS(   '8');  //   0:08
fmtMSS(    9 );  //   0:09
fmtMSS(  '10');  //   0:10
fmtMSS(   59 );  //   0:59
fmtMSS( +'60');  //   1:00
fmtMSS(   69 );  //   1:09
fmtMSS( 3599 );  //  59:59
fmtMSS('3600');  //  60:00
fmtMSS('3661');  //  61:01
fmtMSS( 7425 );  // 123:45

टूट - फूट:

function fmtMSS(s){   // accepts seconds as Number or String. Returns m:ss
  return( s -         // take value s and subtract (will try to convert String to Number)
          ( s %= 60 ) // the new value of s, now holding the remainder of s divided by 60 
                      // (will also try to convert String to Number)
        ) / 60 + (    // and divide the resulting Number by 60 
                      // (can never result in a fractional value = no need for rounding)
                      // to which we concatenate a String (converts the Number to String)
                      // who's reference is chosen by the conditional operator:
          9 < s       // if    seconds is larger than 9
          ? ':'       // then  we don't need to prepend a zero
          : ':0'      // else  we do need to prepend a zero
        ) + s ;       // and we add Number s to the string (converting it to String as well)
}

नोट: ऋणात्मक श्रेणी (0>s?(s=-s,'-'):'')+को रिटर्न एक्सप्रेशन (वास्तव में, (0>s?(s=-s,'-'):0)+साथ ही साथ काम करेगा) से जोड़कर जोड़ा जा सकता है ।


मैं Math.floor(s)क्लीनर परिणामों के लिए अंतिम पंक्ति में जोड़ने का सुझाव दूंगा । वैसे भी महान काम, धन्यवाद!
डिएगो फोर्ट्स

@PossessWithin: नहीं, आपको "Math.floor (s) को अंतिम पंक्ति में जोड़ना नहीं चाहिए " (ब्रेकडाउन-स्निपेट का) कई कारणों से, सबसे महत्वपूर्ण क्योंकि जो बिना किसी संशोधन के बीच और बिना मूल्यों के बग को पेश करेगा ; यदि आपने उदाहरण के लिए प्रवेश किया है तो आउटपुट इसके बजाय होगा ! यह फ़ंक्शन (जिसके लिए मैंने स्पष्ट रूप से पूर्णांक सेकंड निर्दिष्ट किया है) का उद्देश्य और उच्च-पूर्ण क्रंचिंग टूल / 'इंजन' के रूप में तैयार किया गया है (आकार के लिए निंजा-गोल्फ नहीं है) और इस तरह से मैं उस इंजन को अनावश्यक सत्यापन के लिए बोझ करने के लिए इसे उपयुक्त मानता हूं / सफाई / फ़िल्टरिंग ...91069.251:91:09
गीतरलैब

... काम (जैसे NaN, +/-Infinityआदि) और गोलाई-विकल्प जो प्रोग्रामर द्वारा किए जाने चाहिए, फ़ंक्शन को कॉल करने से पहले, विशिष्ट आवश्यकताओं और संभावित इनपुट-मानों के आधार पर जो कि एप्लिकेशन मुठभेड़ कर सकते हैं! स्वाभाविक रूप से आप इसे पैच करने के लिए स्वतंत्र हैं यदि आपके डोमेन ज्ञान में अपेक्षित इनपुट-वैल्यू के बारे में पता चलता है कि आपका विशेष उपयोग-मामला लगभग हमेशा फ्लोटिंग पॉइंट वैल्यू प्राप्त करता है और परफ़ेक्ट-टेस्टिंग यह दर्शाता है कि आपका एप्लिकेशन। आपके मामले में जहाँ आप सकारात्मक मूल्यों के केवल फर्श में पैच करना चाहते हैं ....
GitaarLAB

... (6 वर्णों को झूठे रास्तों में से 1 को छोड़ कर '' चार वर्ण जोड़कर '' (9<s?':':':0')को संशोधित करें (10>s?':0':':')) या (10<=s?':':':0')(2 वर्ण जोड़कर लेकिन 6 सच्चे मार्गों में से 5 को बनाए रखते हुए)। तो फिर मैं सलाह देने के लिए है कि अंतिम अनुगामी बदलने के लिए +sकरने के लिए +(s|0) के बजाय Math.floor(s) , के रूप में की सुंदरता को नष्ट नहीं नहीं संकल्प और कॉल करने के लिए की आवश्यकता होगी, Math.floor जबकि अभी भी अधिक सही तरीके से संचालन पूरे 53bit +/-MAX_SAFE_INTEGER'सिर्फ' 32 बिट (अहस्ताक्षरित) या 31bit के बजाय सीमा (हस्ताक्षरित) सीमा! ध्यान दें कि ABS(s)
मैग्नेट्यूड

... हस्ताक्षर किए गए बिटवाइज़ या सुरक्षित हैं। यह भी ध्यान दें कि शेष सेकंड्स को फ़्लोरिंग किए बिना यह विशेष संशोधन फंक्शनल ज़ीरो को पीछे किए बिना फंक्शन आउटपुट को आंशिक सेकंड बना देगा , लेकिन अक्सर 3 से अधिक महत्वपूर्ण गैर-शून्य फ़्रैक्शनल अंक होंगे, जिन्हें आपको संभवतः भी संभालना होगा। अंत में, जब ऋणात्मक सीमा के लिए वैकल्पिक प्री-फ़िक्स कोड के साथ संयुक्त, यह विशेष रूप से संशोधन प्रभावी रूप से सेकंड ( उन्हें फ़्लोरिंग नहीं ) कर देगा। PS: PFFT, whoever came up with just 512 char limit for any meaningful comment should be...
गीतालीब

21

आप मूल दिनांक ऑब्जेक्ट का उपयोग भी कर सकते हैं:

var date = new Date(null);
date.setSeconds(timeInSeconds);

// retrieve time ignoring the browser timezone - returns hh:mm:ss
var utc = date.toUTCString();
// negative start index in substr does not work in IE 8 and earlier
var time = utc.substr(utc.indexOf(':') - 2, 8)

// retrieve each value individually - returns h:m:s
var time = date.getUTCHours() + ':' + date.getUTCMinutes() + ':' +  date.getUTCSeconds();

// does not work in IE8 and below - returns hh:mm:ss
var time = date.toISOString().substr(11, 8);

// not recommended - only if seconds number includes timezone difference
var time = date.toTimeString().substr(0, 8);

बेशक यह समाधान केवल समय के लिए काम करता है। 24 घंटे से कम समय के बाद;)


1
दिनांक ऑब्जेक्ट को स्वरूपण को संभालने देने के बारे में नहीं सोचा था। कम लचीला, लेकिन अगर आप hh चाहते हैं: mm: ss (या उस की एक उपधारा) तो यह बहुत अच्छा है
MartinAnsty

मैंने इसे 25 सेकंड के साथ आज़माया और यह 01:00:25 पर वापस आया जो 1 घंटे और 25 सेकंड के बराबर है।
टाइमस्टैमैटिक

हाँ, शायद अपने समयक्षेत्र के कारण। मैंने इस मामले को संभालने के लिए समाधान अपडेट किया है।
हमीगू

dateके रूप में भी निर्माण किया जा सकता हैvar date = new Date(timeInSeconds * 1000)
नूनो एन्ड्रे

20

2019 सबसे अच्छा संस्करण

स्वरूप hh:mm:ss

console.log(display(60 * 60 * 2.5 + 25)) // 2.5 hours + 25 seconds

function display (seconds) {
  const format = val => `0${Math.floor(val)}`.slice(-2)
  const hours = seconds / 3600
  const minutes = (seconds % 3600) / 60

  return [hours, minutes, seconds % 60].map(format).join(':')
}


हम्म्, secondsकांस्टेबल है। आप इसे पुन: असाइन नहीं कर सकते।
रोनैपेलंबम

@ronapelbaum यह तर्क, निरंतर नहीं, मुझे समझ में नहीं आ रहा है कि आपका क्या मतलब है
Илья Зеленько

यदि आप उन्हें उपयोग किए जाने वाले पैरामीटर के रूप में प्राप्त करने के बजाय सेकंड को असाइन करते हैं तो @ronapelbaum let, उदाहरण के लिए यह function display (state) { let seconds = state.seconds; ... }था कि शायद आपकी त्रुटि कहाँ से आई थी?
रेट्रोवर्टिगो

एक फ़ंक्शन परम को कास्ट के रूप में माना जाना चाहिए। जब आप उपयोग %=करते हैं तो आप इस परम को पुनः असाइन कर रहे होते हैं। बस का उपयोग करेंseconds%60
ronapelbaum

16
function secondsToMinutes(time){
    return Math.floor(time / 60)+':'+Math.floor(time % 60);
}

3
इसे शून्य सेकेण्ड सेकंड के साथ सुधारा जा सकता है: function secondsToMinutes(time){ return Math.floor(0 / 60)+':'+('0'+Math.floor(0 % 60)).slice(-2); }
Kus

अच्छा! शुक्रिया @Kus बस आप उन दो 0एस को बदलना चाहते हैं time, क्या मैं सही हूं?
मिकी

2
@ मिकी उफ़! जी हाँ,function secondsToMinutes(time){ return Math.floor(time / 60) + ':' + ('0' + Math.floor(time % 60)).slice(-2) }
कुस

12

अग्रणी शून्य जोड़ने के लिए, मैं बस करूंगा:

var minutes = "0" + Math.floor(time / 60);
var seconds = "0" + (time - minutes * 60);
return minutes.substr(-2) + ":" + seconds.substr(-2);

अच्छा और छोटा


9

ईएस 6 का उपयोग करके एक लाइनर को साफ करें


const secondsToMinutes = seconds => Math.floor(seconds / 60) + ':' + ('0' + Math.floor(seconds % 60)).slice(-2);

6

एक लाइनर (घंटों के साथ काम नहीं करता है):

 function sectostr(time) {
    return ~~(time / 60) + ":" + (time % 60 < 10 ? "0" : "") + time % 60;
 }

4

H से सेकंड: mm: ss

var hours = Math.floor(time / 3600);
time -= hours * 3600;

var minutes = Math.floor(time / 60);
time -= minutes * 60;

var seconds = parseInt(time % 60, 10);

console.log(hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds));

क्या कोई minutes < 10 ? '0' + minutes : minutesमेरे लिए व्याख्या कर सकता है , केवल मूल js ज्ञान मानकर?
जेडीआईआई

यदि मिनट एकल अंक (<10) हैं तो अग्रणी शून्य शून्य नहीं है।
kayz1

यह सहायता करता है! मुझे एहसास नहीं था कि "" js में ternary ऑपरेटर था।
जेडीआईआई

4

निम्नलिखित फ़ंक्शन आपको दिन, घंटे, मिनट, सेकंड प्राप्त करने में मदद करेगा

toDDHHMMSS(inputSeconds){
        const Days = Math.floor( inputSeconds / (60 * 60 * 24) );
        const Hour = Math.floor((inputSeconds % (60 * 60 * 24)) / (60 * 60));
        const Minutes = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) / 60 );
        const Seconds = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) % 60 );
        let ddhhmmss  = '';
        if (Days > 0){
            ddhhmmss += Days + ' Day ';
        }
        if (Hour > 0){
            ddhhmmss += Hour + ' Hour ';
        }

        if (Minutes > 0){
            ddhhmmss += Minutes + ' Minutes ';
        }

        if (Seconds > 0){
            ddhhmmss += Seconds + ' Seconds ';
        }
        return ddhhmmss;
    }
alert( toDDHHMMSS(2000));

मैं यह पसंद है। मैं बदल if (Days > 0){ ddhhmmss += Days + ' Day '; }करने के लिए if (Days > 0) {ddhhmmss += Days === 1 ? Days + ' Day ' : Days + ' Days '};कहने के लिए 1 Day, 2 Days, 3 Daysआदि इसी प्रकार के अन्य लोगों के लिए किया जा सकता है।
Ste

4

इस सब के बाद, एक और सरल उपाय:

const time = new Date(null);
time.setSeconds(7530);
console.log(time.getHours(), time.getMinutes(), time.getSeconds());

1
time.setSeconds(1);रिटर्न का उपयोग करना 1 0 1चाहिए जब यह होना चाहिए 0 0 1
Ste

3

इसके लिए एक और लेकिन अधिक सुरुचिपूर्ण समाधान इस प्रकार है:

/**
 * Convert number secs to display time
 *
 * 65 input becomes 01:05.
 *
 * @param Number inputSeconds Seconds input.
 */
export const toMMSS = inputSeconds => {
    const secs = parseInt( inputSeconds, 10 );
    let minutes = Math.floor( secs / 60 );
    let seconds = secs - minutes * 60;

    if ( 10 > minutes ) {
        minutes = '0' + minutes;
    }
    if ( 10 > seconds ) {
        seconds = '0' + seconds;
    }

    // Return display.
    return minutes + ':' + seconds;
};

2

शून्य जोड़ने के लिए मुझे वास्तव में एक पूर्ण अन्य फ़ंक्शन की आवश्यकता नहीं है जहां आप उदाहरण के लिए उपयोग कर सकते हैं

var mins=Math.floor(StrTime/60);
var secs=StrTime-mins * 60;
var hrs=Math.floor(StrTime / 3600);
RoundTime.innerHTML=(hrs>9?hrs:"0"+hrs) + ":" + (mins>9?mins:"0"+mins) + ":" + (secs>9?secs:"0"+secs);

इसके कारण हमारे पास पहले से सशर्त बयान हैं।

(स्थिति? यदि सत्य है: यदि असत्य है) तो यदि उदाहरण सेकंड केवल 9 सेकंड से अधिक है, तो इससे पहले एक स्ट्रिंग 0 जोड़ें।


2

इसे आज़माएं: दूसरे को HOURS, MIN और SEC में परिवर्तित करें।

function convertTime(sec) {
    var hours = Math.floor(sec/3600);
    (hours >= 1) ? sec = sec - (hours*3600) : hours = '00';
    var min = Math.floor(sec/60);
    (min >= 1) ? sec = sec - (min*60) : min = '00';
    (sec < 1) ? sec='00' : void 0;

    (min.toString().length == 1) ? min = '0'+min : void 0;    
    (sec.toString().length == 1) ? sec = '0'+sec : void 0;    

    return hours+':'+min+':'+sec;
}

2

var seconds = 60;
var measuredTime = new Date(null);
measuredTime.setSeconds(seconds); // specify value of SECONDS
var Time = measuredTime.toISOString().substr(11, 8);
document.getElementById("id1").value = Time;
<div class="form-group">
  <label for="course" class="col-md-4">Time</label>
  <div class="col-md-8">
    <input type="text" class="form-control" id="id1" name="field">Min
  </div>
</div>


2

यदि आप Moment.js का उपयोग कर रहे हैं तो आप वहां निर्मित Durationवस्तु का उपयोग कर सकते हैं

const duration = moment.duration(4825, 'seconds');

const h = duration.hours(); // 1
const m = duration.minutes(); // 20
const s = duration.seconds(); // 25

2

2020 अद्यतन

बुनियादी गणित और सरल जावास्क्रिप्ट का उपयोग करके यह कोड की कुछ लाइनों में किया जा सकता है।

उदाहरण - कन्वर्ट 7735 secondsकरने के लिए HH:MM:SS


गणित:

गणना का उपयोग करें:

  1. Math.floor()- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

Math.floor()समारोह की तुलना में कम सबसे बड़ा पूर्णांक रिटर्न या दी गई संख्या के बराबर।

  1. %अंकगणित ऑपरेटर (शेष) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder

जब एक ऑपरेंड दूसरे ऑपरेंड से विभाजित होता है तो शेष ऑपरेटर शेष बचा हुआ रिटर्न देता है। यह हमेशा लाभांश का संकेत लेता है।

नीचे दिए गए कोड की जाँच करें। सेकंड को 3600घंटों की संख्या और शेष के लिए विभाजित किया जाता है, जिसका उपयोग मिनट और सेकंड की संख्या की गणना के लिए किया जाता है।

HOURS => 7735 / 3600 = 2 remainder 535

MINUTES => 535 / 60 = 8 remainder 55

SECONDS => 55


अग्रणी शून्य:

यहां कई उत्तर अग्रणी तरीकों का उपयोग करते हुए घंटों, मिनटों और सेकंडों को अग्रणी शून्य के साथ उचित तरीके से दिखाते हैं - आदि 45, 04इसका उपयोग करके किया जा सकता है padStart()। यह तार के लिए काम करता है इसलिए संख्या को स्ट्रिंग का उपयोग करके परिवर्तित किया जाना चाहिए toString()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

padStart()विधि दूसरी स्ट्रिंग से वर्तमान स्ट्रिंग (कई बार, यदि आवश्यक हो) पैड जब तक जिसके परिणामस्वरूप स्ट्रिंग दिया लंबाई तक पहुँचता है। पेडिंग को वर्तमान स्ट्रिंग की शुरुआत से लागू किया जाता है।


कोड:

function secondsToTime(e){
    var h = Math.floor(e / 3600).toString().padStart(2,'0'),
        m = Math.floor(e % 3600 / 60).toString().padStart(2,'0'),
        s = Math.floor(e % 60).toString().padStart(2,'0');
    
    return h + ':' + m + ':' + s;
}

console.log(secondsToTime(7735));  //02:08:55

/*
secondsToTime(SECONDS) => HH:MM:SS 

secondsToTime(8)       => 00:00:08 
secondsToTime(68)      => 00:01:08
secondsToTime(1768)    => 00:29:28
secondsToTime(3600)    => 01:00:00
secondsToTime(5296)    => 01:28:16
secondsToTime(7735)    => 02:08:55
secondsToTime(45296)   => 12:34:56
secondsToTime(145296)  => 40:21:36
secondsToTime(1145296) => 318:08:16
*/


1

आपने मिनट और सेकंड के समय को ट्रैक करने के लिए पर्याप्त कोड किया है।

आप जो कुछ भी कर सकते हैं वह घंटे के कारक को जोड़ सकता है:

var hrd = time % (60 * 60 * 60);
var hours = Math.floor(hrd / 60);

var mind = hrd % 60;
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

var moreminutes = minutes + hours * 60

यह आपको वह देगा जो आपको चाहिए।


मैंने इसे सेकंड के रूप में "समय" का उपयोग करने की कोशिश की और यह काम नहीं किया। उदाहरण के लिए, 975 सेकंड का मतलब hrd = 975 है, जिसका मतलब है कि घंटे 16 हैं।
स्पेस

1

मैं इसे पूरा करने के लिए एक तेज़ तरीके के बारे में सोच रहा था और यह वही है जिसके साथ मैं आया था

var sec = parseInt(time);
var min=0;
while(sec>59){ sec-=60; min++;}

यदि हम "समय" को मिनट और सेकंड में बदलना चाहते हैं, उदाहरण के लिए:

// time = 75,3 sec
var sec = parseInt(time); //sec = 75
var min=0;
while(sec>59){ sec-=60; min++;} //sec = 15; min = 1

1

मेरे दो सेंट लगाएं:

function convertSecondsToMinutesAndSeconds(seconds){
            var minutes;
            var seconds;
            minutes = Math.floor(seconds/60);
            seconds = seconds%60;

            return [minutes, seconds];
        }

तो यह :

var minutesAndSeconds = convertSecondsToMinutesAndSeconds(101);

निम्नलिखित उत्पादन होगा:

[1,41];

तब आप इसे प्रिंट कर सकते हैं:

console.log('TIME : ' +  minutesSeconds[0] + ' minutes, ' + minutesSeconds[1] + ' seconds');

//TIME : 1 minutes, 41 seconds

1

strftime.js ( strftime github ) पुस्तकालयों को प्रारूपित करने वाले सर्वोत्तम समयों में से एक है। यह बेहद हल्का है - 30KB - और प्रभावी। इसका उपयोग करके आप सेकंड में आसानी से कोड की एक पंक्ति में समय को परिवर्तित कर सकते हैं, जो ज्यादातर मूल तिथि वर्ग पर निर्भर करता है।

एक नई तारीख बनाते समय, प्रत्येक वैकल्पिक तर्क निम्नानुसार है:

new Date(year, month, day, hours, minutes, seconds, milliseconds);

इसलिए यदि आप एक नई तिथि को सभी तर्कों के साथ शून्य से सेकंड तक आरंभ करते हैं, तो आपको मिलेगा:

var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)

आप देख सकते हैं कि 150 सेकंड 2-मिनट और 30-सेकंड हैं, जैसा कि बनाई गई तारीख में देखा गया है। फिर "एमएम: एसएस" के लिए एक स्ट्रैपटाइम प्रारूप ("% M:% S") का उपयोग करते हुए, यह आपके मिनट्स के स्ट्रिंग को आउटपुट करेगा।

var mm_ss_str = strftime("%M:%S", date);
=> "02:30"

एक पंक्ति में, ऐसा लगेगा:

var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"

इसके अलावा यह आपको विनिमेय समर्थन HH: MM: SS और MM: SS सेकंड की संख्या के आधार पर करने की अनुमति देगा। उदाहरण के लिए:

# Less than an Hour (seconds < 3600)
var seconds = 2435;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "40:35"

# More than an Hour (seconds >= 3600)
var seconds = 10050;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "02:47:30"

और निश्चित रूप से, आप बस उस प्रारूप को पास कर सकते हैं जिसे आप स्ट्रैटिफ़्म करना चाहते हैं यदि आप चाहते हैं कि समय स्ट्रिंग अधिक या कम अर्थ हो।

var format = 'Honey, you said you\'d be read in %S seconds %M minutes ago!';
strftime(format, new Date(0,0,0,0,0,1210));
=> "Honey, you said you'd be read in 10 seconds 20 minutes ago!"

उम्मीद है की यह मदद करेगा।


1
export function TrainingTime(props) {
    const {train_time } = props;
    const hours = Math.floor(train_time/3600);
    const minutes = Math.floor((train_time-hours * 3600) / 60);
    const seconds = Math.floor((train_time%60));

    return `${hours} hrs  ${minutes} min  ${seconds} sec`;
}

2
ढेर अतिप्रवाह में आपका स्वागत है। जैसा कि @PhilRoggenbuck ने सुझाव दिया था, एक स्पष्टीकरण से मदद मिलेगी। अधिक जानकारी के लिए stackoverflow.com/help/how-to-answer
Mikkel

0

मैं एक और उपाय सुझाता हूं:

function formatTime(nbSeconds, hasHours) {
    var time = [],
        s = 1;
    var calc = nbSeconds;

    if (hasHours) {
        s = 3600;
        calc = calc / s;
        time.push(format(Math.floor(calc)));//hour
    }

    calc = ((calc - (time[time.length-1] || 0)) * s) / 60;
    time.push(format(Math.floor(calc)));//minute

    calc = (calc - (time[time.length-1])) * 60;
    time.push(format(Math.round(calc)));//second


    function format(n) {//it makes "0X"/"00"/"XX"
        return (("" + n) / 10).toFixed(1).replace(".", "");
    }

    //if (!hasHours) time.shift();//you can set only "min: sec"

    return time.join(":");
};
console.log(formatTime(3500));//58:20
console.log(formatTime(305));//05:05
console.log(formatTime(75609, true));//21:00:09
console.log(formatTime(0, true));//00:00:00


0

मुझे पता है कि इसे कई तरीकों से हल किया गया है। मुझे इस फ़ंक्शन की आवश्यकता थी After Effects स्क्रिप्ट, जहां गति या नाम स्थान प्रदूषण कोई समस्या नहीं है। मैं इसे किसी ऐसे व्यक्ति के लिए यहां छोड़ देता हूं, जिसे कुछ इसी तरह की जरूरत है। मैंने कुछ परीक्षण भी लिखे और ठीक काम किया। तो यहाँ कोड है:

Number.prototype.asTime = function () {
    var hour = Math.floor(this / 3600),
        min = Math.floor((this - hour * 3600) / 60),
        sec = this - hour * 3600 - min * 60,
        hourStr, minStr, secStr;
    if(hour){
        hourStr = hour.toString(),
        minStr = min < 9 ? "0" + min.toString() : min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return hourStr + ":" + minStr + ":" + secStr + "hrs";
    }
    if(min){
        minStr = min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return  minStr + ":" + secStr + "min";
    }
    return sec.toString() + "sec";
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.