জাভাস্ক্রিপ্ট সেকেন্ড থেকে মিনিট এবং সেকেন্ডে


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 সেকেন্ডে ফিরে আসে। আমি কীভাবে এড়াতে পারি যাতে এটি সমস্ত মিনিট ফিরে আসে?

ধন্যবাদ


হ্যাঁ কারণ সময় = 3600, 3600% 3600 সর্বদা 0 থাকে ... সুতরাং আপনার গণনা অনুসারে আর সমস্ত কিছুই 0 হবে।
এমএসআই

উত্তর:


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
'Var সেকেন্ড = সময়% 60' করে বাকি সেকেন্ডগুলি পেতে এটি কিছুটা পরিষ্কার er
এডওয়ার্ড ডি'সুজা

11
@ রেডিওগুলি ব্যবহার করে শীর্ষস্থানীয় জিরো যুক্ত করুন 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);
ড্রু

1
এই সমাধানটি নেতিবাচক মানগুলির জন্য কাজ করবে না time। উদাহরণস্বরূপ আপনি যদি ইনপুট -১ সেকেন্ডের জন্য থাকেন তবে আপনি -1 মিনিট এবং 59 সেকেন্ড ফিরে পাবেন ...
পাইলিনাক্স

5
নেতিবাচক থাকার বোধটি timeকী?
যৌক্তিকভাবে

4
সেকেন্ডের সংখ্যা পেতে আপনি মডুলাস ব্যবহার করতে পারেন, এটি আমার মতে আরও পঠনযোগ্য। var seconds = time % 60
জিসিএম

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
এর অর্থ কী ~~?
এমকন্ট

9
এটি এর জন্য একটি বেসিক শাওয়ারহ্যান্ড Math.floor, এই লিঙ্কটি দেখুন
ল্যাপিন

এটির কাজ ঠিক আছে ..... :) আপনি এইভাবে মানটি গোল করতে পারেন hrs = hrs.toFixed (0); মিনিট = mins.toFixed (0); সেকেন্ড = সেকেন্ড. টো ফিক্সড (0);
আবদুল খালিক

1
এই সমাধানের জন্য ধন্যবাদ! আমি যোগ time = math.round(time)প্রথম লাইন আমাকে বৃত্তাকার সেকেন্ড দিতে।
fotoflo

এটিই আরও সঠিক সমাধান। উপরে উল্লিখিত হিসাবে, এই পৃষ্ঠায় সর্বাধিক ভোট সহ সমাধানটি 180 সেকেন্ড 2 মি 60 হিসাবে প্রদর্শন করে।
গানবক্স

71

দ্রুততম সহজ এবং এইভাবে সংক্ষিপ্ত সমাধানের জন্য সেকেন্ডগুলিতে ফর্ম্যাট করার সংক্ষিপ্ত সমাধানের প্রত্যাশায় লোকেরা M:SS:

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

কাজ ..
ফাংশন গ্রহণ পারেন একটি Number(পছন্দসই) বা একটি String(2 Conversion 'জরিমানা' আপনি prepending দ্বারা অর্ধেক করতে +জন্য ফাংশন কল এর যুক্তি মধ্যে 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)ক্লিনার ফলাফলের জন্য শেষ লাইনে যুক্ত করার পরামর্শ দেব । যাইহোক দুর্দান্ত কাজ করছি, ধন্যবাদ!
ডিয়েগো

@ প্যাসেসভিথিন: না, একাধিক কারণে আপনাকে "শেষ পংক্তিতে ম্যাথ.ফ্লুর (গুলি) যুক্ত করা উচিত নয় " (ব্রেকডাউন-স্নিপেটের) একাধিক কারণে, মূলত কারণ এটি আরও সংশোধনকারীগুলির মধ্যে 9এবং 10ছাড়া মানগুলির জন্য একটি বাগ প্রবর্তন করবে ; আপনি যদি উদাহরণস্বরূপ প্রবেশ 69.25করান তবে আউটপুট 1:9পরিবর্তে হবে 1:09! এই ফাংশনটি (যার জন্য আমি স্পষ্টভাবে পূর্ণসংখ্যার সেকেন্ড নির্দিষ্ট করেছি) উচ্চ-পারফ ক্রাঞ্চিং সরঞ্জাম / 'ইঞ্জিন' (আকারের জন্য নিনজা-গল্ফড নয়) হিসাবে প্রেমপূর্ণভাবে তৈরি করা হয়েছে এবং যেমন আমি এটিকে অপরিবর্তিত যাচাইকরণের সাথে ইঞ্জিনের বোঝা যথাযথভাবে বিবেচনা করি / ক্লিনআপ / ফিল্টারিং ...
গীতারেলব

... কাজ (যেমন NaN, +/-Infinityইত্যাদি) এবং অ্যাপ্লিকেশন মুখোমুখি হতে পারে এমন নির্দিষ্ট প্রয়োজনীয়তা এবং সম্ভাব্য ইনপুট-মানগুলির উপর ভিত্তি করে ফাংশনটি কল করার আগে প্রোগ্রামার দ্বারা গোল করা-বিকল্পগুলি করা উচিত! আপনার প্রত্যাশিত ইনপুট-মানগুলি সম্পর্কে আপনার ডোমেন জ্ঞান যদি নির্দেশ করে যে আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রায়শই ভাসমান পয়েন্টের মান এবং পারফ-টেস্টিংটি আপনার অ্যাপ্লিকেশনটিকে নির্দেশ করে তবে স্বাভাবিকভাবেই আপনি এটিকে প্যাচ করতে পারেন । আপনার ক্ষেত্রে যেখানে আপনি ইতিবাচক মানগুলির কেবলমাত্র মেঝেতে প্যাচ করতে চান ....
গীতারল্যাব

... সংশোধন (9<s?':':':0')করুন (10>s?':0':':')(ভুয়া-পাথগুলিতে 6 টি সত্য পথের মধ্যে 5 টির চেয়ে 'কোরবানি' বলুন) বা (10<=s?':':':0')(2 টি অক্ষর যোগ করুন তবে 6 টি সত্য পথের মধ্যে 5 টি বজায় রাখা)। তারপর আমি পরামর্শ যে চূড়ান্ত চিহ্ন পরিবর্তন করতে +sকরতে +(s|0) পরিবর্তে Math.floor(s) , এর যেমন সৌন্দর্য ধ্বংস না না করতে হবে এবং কলে প্রয়োজন Math.floor যখন এখনও ধরে সঠিকভাবে কাজ করতে সমগ্র 53bit +/-MAX_SAFE_INTEGER'শুধু' 32bit (স্বাক্ষরবিহীন) অথবা 31bit পরিবর্তে পরিসীমা (স্বাক্ষরিত) পরিসীমা! দ্রষ্টব্য যে ABS(s)চৌম্বকটি 60 এর চেয়ে ছোট হওয়ার গ্যারান্টিযুক্ত, সুতরাং স্বাক্ষরিত ...
গীতারল্যাব

... স্বাক্ষরিত বিটওয়াইস বা নিরাপদ। এছাড়াও মনে রাখবেন যে বাকী সেকেন্ডগুলিতে মেঝে ছাড়াই এই বিশেষ পরিবর্তনটি ভগ্নাংশ শূন্যগুলি অনুসরণ না করে ফাংশন আউটপুটকে ভগ্নাংশ সেকেন্ড তৈরি করবে , তবে প্রায়শই 3 টিরও বেশি উল্লেখযোগ্য নন-শূন্য বিভাজনীয় অঙ্ক থাকবে যা আপনার সম্ভবত পরিচালনাও করতে হবে। অবশেষে, যখন নেতিবাচক পরিসীমা জন্য ঐচ্ছিক প্রাক-ফিক্স কোড সঙ্গে মিলিত, এই বিশেষ পরিবর্তন কার্যকরভাবে হবে truncate সেকেন্ড (না মঁচ তাদের)। 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);

অবশ্যই এই সমাধানটি কেবল সময়ের জন্য কাজ করে 27 সেকেন্ডের চেয়ে কম ২৪ ঘন্টা;)


1
তারিখ অবজেক্টটি বিন্যাসটি পরিচালনা করতে দেওয়ার কথা ভাবেনি। কম নমনীয়, তবে আপনি যদি এইচ এইচ: মিমি: এসএস (বা
এটির একটি উপবৃত্তি

আমি এটি 25 সেকেন্ডের সাথে চেষ্টা করেছিলাম এবং এটি 01:00:25 এ ফিরে আসে যা 1 ঘন্টা 25 সেকেন্ডের সমান হয়।
টিমস্টারমেটিক

হ্যাঁ, সম্ভবত আপনার টাইমজোনটির কারণে। আমি এই কেসটি পরিচালনা করার জন্য সমাধানটি আপডেট করেছি।
হামকজু

dateনামেও নির্মাণ করা যেতে পারেvar date = new Date(timeInSeconds * 1000)
Nuno আঁদ্রে

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 আপনি যদি প্যারামিটারটি ব্যবহার না করে সেগুলি সেকেন্ডের পরিবর্তে নির্ধারণ করেন let, যেমন function display (state) { let seconds = state.seconds; ... }আপনার ত্রুটিটি কোথা থেকে এসেছে?
retrovertigo

কোনও ফাংশন পরমকে কনস্ট হিসাবে বিবেচনা করা উচিত। আপনি যখন ব্যবহার করেন %=আপনি এই পরমটিকে পুনরায় বরাদ্দ করছেন। স্রেফ ব্যবহার করুনseconds%60
রোনাপেলবাউম

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); }
কুস

চমৎকার! ধন্যবাদ @ কুস কেবল আপনি এই দুটি 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

ES6 ব্যবহার করে একটি লাইনার পরিষ্কার করুন


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: মিমি: এসএস

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কেবলমাত্র বেসিক জেএস জ্ঞান ধরে আমার জন্য ব্যাখ্যা করতে পারেন ?
Zediiiii

যদি মিনিটগুলি সিঙ্গেল ডিজিট হয় (<10) অগ্রণী শূন্যটি অন্যভাবে নয় prep
কায়েজ 1

যে সাহায্য করে! আমি বুঝতে পারি নি "?" জেএস মধ্যে টেরিনারি অপারেটর ছিল।
Zediiiii

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ইত্যাদি একই অন্যদের জন্য করা যাবে।
স্টে

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
স্টে

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/ উল্লেখ / গ্লোবাল_অবজেক্টস / ম্যাথ / ফ্লুর

Math.floor()ফাংশন কম বৃহত্তম পূর্ণসংখ্যা ফেরৎ বা একটি প্রদত্ত সংখ্যার সমান।

  1. %পাটিগণিত অপারেটর (রিমাইন্ডার) - https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / অপারেটর / অ্যারিথমেটিক_ অপারেটর# রেইমেন্ডার

একটি অপারেন্ড দ্বিতীয় অপারেন্ড দ্বারা ভাগ হয়ে গেলে অবশিষ্ট অপারেটর অবশিষ্ট বাকী অংশটি দেয়। এটি সর্বদা লভ্যাংশের চিহ্ন নেয়।

নীচে কোড দেখুন। 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

এটি আপনাকে যা প্রয়োজন তা দেবে।


আমি "সময় "টিকে সেকেন্ড হিসাবে ব্যবহার করে চেষ্টা করেছি এবং এটি কার্যকর হয়নি work উদাহরণস্বরূপ, 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 ) অন্যতম সেরা সময় বিন্যাস গ্রন্থাগার। এটি অত্যন্ত হালকা - 30 কেবি - এবং কার্যকর। এটি ব্যবহার করে আপনি বেশিরভাগ নেটিভ ডেট ক্লাসের উপর নির্ভর করে কোডের এক লাইনে সহজেই সেকেন্ডে রূপান্তর করতে পারেন।

একটি নতুন তারিখ তৈরি করার সময়, প্রতিটি alচ্ছিক যুক্তি নিম্নরূপে স্থায়ী হয়:

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"

এছাড়াও এটি আপনাকে সেকেন্ডের সংখ্যার ভিত্তিতে এইচএইচ: এমএম: এসএস এবং এমএম: এসএসকে বিনিময়যোগ্য সহায়তা করার অনুমতি দেবে। উদাহরণ স্বরূপ:

# 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
স্ট্যাক ওভারফ্লোতে আপনাকে স্বাগতম। @ ফিলারোগেনবাকের পরামর্শ অনুসারে, একটি ব্যাখ্যা সাহায্য করবে। আরও তথ্যের জন্য পড়ুন stackoverflow.com/help/how-to-answer
মিক্কেল

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

আমি জানি এটি বিভিন্নভাবে সমাধান করা হয়েছে। প্রভাবগুলির পরে স্ক্রিপ্টের জন্য আমার এই ফাংশনটির প্রয়োজন ছিল, যেখানে গতি বা নেমস্পেস দূষণ কোনও সমস্যা নয়। আমি এমন কারওর জন্য এখানে ফেলে দিচ্ছি যার অনুরূপ কিছু দরকার। আমি কিছু পরীক্ষা লিখেছি এবং ভাল কাজ করেছিলাম। সুতরাং এখানে কোড:

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";
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.