जावास्क्रिप्ट में समय मिलिसेकंड को घंटे, मिनट, सेकंड प्रारूप में कैसे बदलें?


87

मेरे पास मिलीसेकंड के रूप में समय है, लेकिन मैं रूपांतरण के बाद का समय चाहता हूं 00:00:00

Ex: मिलीसेकंड में = 86400000। मैं चाहता हूं कि उस मिलीसेकंड में कितने घंटे हों,00:00:00

इसे जावास्क्रिप्ट में कैसे प्राप्त करें?

जवाबों:


123

नीचे दिए गए अनुसार जावास्क्रिप्ट में एक फ़ंक्शन बनाकर इसे कैसे करें:

function msToTime(duration) {
  var milliseconds = parseInt((duration % 1000) / 100),
    seconds = Math.floor((duration / 1000) % 60),
    minutes = Math.floor((duration / (1000 * 60)) % 60),
    hours = Math.floor((duration / (1000 * 60 * 60)) % 24);

  hours = (hours < 10) ? "0" + hours : hours;
  minutes = (minutes < 10) ? "0" + minutes : minutes;
  seconds = (seconds < 10) ? "0" + seconds : seconds;

  return hours + ":" + minutes + ":" + seconds + "." + milliseconds;
}
console.log(msToTime(300000))


मैंने इस तरह से मिलीसेकेंड को घंटों: मिनटों: सेकंड्स फॉर्मेट में बदल दिया है। लेकिन मुझे सही तरीके से नहीं मिला। यह सभी मिलिसेकंड्स के लिए केवल 21:11:05 दे रहा है। मैं इसे कैसे लागू कर सकता हूं?
चेलियन

1
var s = st_date + '' + start; var e = end_date + '' + अंत; var बिट्स = s.split (/ \ D /); var bit1 = e.split (/ \ D /); var date = new Date (बिट्स [0], - बिट्स [1], बिट्स [2], बिट्स [3], बिट्स [4], बिट्स [5]); var date1 = नई तारीख (बिट्स 1 [0], - बिट्स 1 [1], बिट्स 1 [2], बिट्स 1 [3], बिट्स 1 [4], बिट्स 1 [5]);
चेलियन

var t1 = date.getTime () var t2 = date1.getTime () var t3 = date1.getTime () - date.getTime (); var सेकंड; var मिनट; var मिलीसेकंड = parseInt ((t3% 1000) / 100), सेकंड = parseInt ((t3 / 1000)% 60), मिनट = parseInt ((t3 / (1000 * 60)) 60%, घंटे = parseInt (t3) / (1000 * 60 * 60))% 24); घंटे = (घंटे <10)? "0" + घंटे: घंटे; मिनट = (मिनट <10)? "0" + मिनट: मिनट; सेकंड = (सेकंड <10)? "0" + सेकंड: सेकंड; अवधि = घंटे + ":" + मिनट + ":" + सेकंड; चेतावनी ('डर ::' + टी 3); चेतावनी ('अवधि:' + अवधि);
चेलियन

6
parseInt (string) मंजिल के लिए इष्टतम तरीका नहीं है। उदाहरण के लिए आप इसे टाइपस्क्रिप्ट में उपयोग नहीं कर सकते। इसके अलावा एमएस / 100 क्यों? यह एक अच्छा जवाब नहीं है।
डोमिनिक

1
jsperf.com/test-parseint-and-math-floor मंजिल रास्ता तेजी से ParseInt से है
माथीउ Riegler

53

मिलीसेकंड में समय को मानव पठनीय प्रारूप में परिवर्तित करना।

 function timeConversion(millisec) {

        var seconds = (millisec / 1000).toFixed(1);

        var minutes = (millisec / (1000 * 60)).toFixed(1);

        var hours = (millisec / (1000 * 60 * 60)).toFixed(1);

        var days = (millisec / (1000 * 60 * 60 * 24)).toFixed(1);

        if (seconds < 60) {
            return seconds + " Sec";
        } else if (minutes < 60) {
            return minutes + " Min";
        } else if (hours < 24) {
            return hours + " Hrs";
        } else {
            return days + " Days"
        }
    }

"Out Put Sample"


4
मैंने इसे सबसे अधिक उपयोगी पाया, शीर्ष उत्तर ने मेरे परीक्षण में घंटों को अच्छी तरह से संभाल नहीं पाया और इससे आपको दिनों के विकल्प भी मिलते हैं।
ak85

22

मैं एक ही समस्या थी, यह वही है जो मैंने किया:

function parseMillisecondsIntoReadableTime(milliseconds){
  //Get hours from milliseconds
  var hours = milliseconds / (1000*60*60);
  var absoluteHours = Math.floor(hours);
  var h = absoluteHours > 9 ? absoluteHours : '0' + absoluteHours;

  //Get remainder from hours and convert to minutes
  var minutes = (hours - absoluteHours) * 60;
  var absoluteMinutes = Math.floor(minutes);
  var m = absoluteMinutes > 9 ? absoluteMinutes : '0' +  absoluteMinutes;

  //Get remainder from minutes and convert to seconds
  var seconds = (minutes - absoluteMinutes) * 60;
  var absoluteSeconds = Math.floor(seconds);
  var s = absoluteSeconds > 9 ? absoluteSeconds : '0' + absoluteSeconds;


  return h + ':' + m + ':' + s;
}


var time = parseMillisecondsIntoReadableTime(86400000);

alert(time);


17

यह एक समय यूट्यूब वीडियो की तरह लौटता है

    function getYoutubeLikeToDisplay(millisec) {
        var seconds = (millisec / 1000).toFixed(0);
        var minutes = Math.floor(seconds / 60);
        var hours = "";
        if (minutes > 59) {
            hours = Math.floor(minutes / 60);
            hours = (hours >= 10) ? hours : "0" + hours;
            minutes = minutes - (hours * 60);
            minutes = (minutes >= 10) ? minutes : "0" + minutes;
        }

        seconds = Math.floor(seconds % 60);
        seconds = (seconds >= 10) ? seconds : "0" + seconds;
        if (hours != "") {
            return hours + ":" + minutes + ":" + seconds;
        }
        return minutes + ":" + seconds;
    }

आउटपुट:

  • getYoutubeLikeToDisplay (129900) = "2:10"
  • getYoutubeLikeToDisplay (1229900) = "20:30"
  • getYoutubeLikeToDisplay (21229900) = "05:53:50"

टिप्पणी - उदाहरण के लिए नकारात्मक समय के लिए सही तरीके से काम नहीं -3000करना चाहिए -00:03लेकिन यह वापस आ जाता है -1:0-03
अनु

16

यहाँ मेरा समाधान है

let h,m,s;
h = Math.floor(timeInMiliseconds/1000/60/60);
m = Math.floor((timeInMiliseconds/1000/60/60 - h)*60);
s = Math.floor(((timeInMiliseconds/1000/60/60 - h)*60 - m)*60);

// समय प्रारूप प्राप्त करने के लिए 00:00:00

s < 10 ? s = `0${s}`: s = `${s}`
m < 10 ? m = `0${m}`: m = `${m}`
h < 10 ? h = `0${h}`: h = `${h}`


console.log(`${s}:${m}:${h}`);

भव्य। धन्यवाद।
एंडी

इस सवाल का सबसे साफ जवाब।
मुद-दुवे

2
मैं टर्नरी ऑपरेटर के बाहर मूल्य निर्धारित करना चाहता हूँ:s = `${s < 10 ? '0': ''}${s}`
सीनियरप्रेटर

9

क्षमा करें, पार्टी के लिए देर हो चुकी है। स्वीकृत उत्तर ने इसे मेरे लिए नहीं काटा, इसलिए मैंने इसे स्वयं लिखा।

आउटपुट:

2h 59s
1h 59m
1h
1h 59s
59m 59s
59s

कोड (टाइपस्क्रिप्ट):

function timeConversion(duration: number) {
  const portions: string[] = [];

  const msInHour = 1000 * 60 * 60;
  const hours = Math.trunc(duration / msInHour);
  if (hours > 0) {
    portions.push(hours + 'h');
    duration = duration - (hours * msInHour);
  }

  const msInMinute = 1000 * 60;
  const minutes = Math.trunc(duration / msInMinute);
  if (minutes > 0) {
    portions.push(minutes + 'm');
    duration = duration - (minutes * msInMinute);
  }

  const seconds = Math.trunc(duration / 1000);
  if (seconds > 0) {
    portions.push(seconds + 's');
  }

  return portions.join(' ');
}

console.log(timeConversion((60 * 60 * 1000) + (59 * 60 * 1000) + (59 * 1000)));
console.log(timeConversion((60 * 60 * 1000) + (59 * 60 * 1000)              ));
console.log(timeConversion((60 * 60 * 1000)                                 ));
console.log(timeConversion((60 * 60 * 1000)                    + (59 * 1000)));
console.log(timeConversion(                   (59 * 60 * 1000) + (59 * 1000)));
console.log(timeConversion(                                      (59 * 1000)));

धन्यवाद आदमी, यह वही है जो मैं चाहता था। '0h 0m 10s' आदि दिखाने के लिए थोड़ा सा अनुकूल होना चाहिए, लेकिन अन्यथा साफ और
अनुकरणीय है

मैंने अपना लिखना शुरू किया, फिर मैंने सोचा, किसी ने यह पहले ही कर लिया होगा :)। धन्यवाद!
बेन एस

6

उपरोक्त स्निपेट 1 दिन से अधिक के मामलों के लिए काम नहीं करते हैं (उन्हें बस अनदेखा कर दिया जाता है)।

इसके लिए आप इसका उपयोग कर सकते हैं:

function convertMS(ms) {
    var d, h, m, s;
    s = Math.floor(ms / 1000);
    m = Math.floor(s / 60);
    s = s % 60;
    h = Math.floor(m / 60);
    m = m % 60;
    d = Math.floor(h / 24);
    h = h % 24;
    h += d * 24;
    return h + ':' + m + ':' + s;
}

यहाँ छवि विवरण दर्ज करें

आभार https://gist.github.com/remino/1563878


1
अधिक मानवीकृत आउटपुट के लिए आप कुछ वापस कर सकते हैं जैसे: रिटर्न ((h + '') .length === 1? '0' + h: h) + ':' + ('0' + m) .substr (-) 2) + ':' + ('0' + s) .substr (-2);
विटल

@ विटॉल बस उपयोग करें return (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);, क्योंकि यह बेहतर है कि यह गणित के साथ स्ट्रिंग हेरफेर के एक गुच्छा से बेहतर है।
मिच मैकमाबर्स

3

मुझे केवल एक दिन, 24 घंटों तक का समय चाहिए था, यह मेरा समय था:

const milliseconds = 5680000;

const hours = `0${new Date(milliseconds).getHours() - 1}`.slice(-2);
const minutes = `0${new Date(milliseconds).getMinutes()}`.slice(-2);
const seconds = `0${new Date(milliseconds).getSeconds()}`.slice(-2);

const time = `${hours}:${minutes}:${seconds}`
console.log(time);

अगर जरूरत हो तो आप इस तरह से दिन निकाल सकते हैं।


3

यह समाधान functionमिलिसेकंड को विभाजित करने के लिए एक का उपयोग करता है parts object, और दूसरे functionको प्रारूपित करने के लिए parts object

मैंने 2 प्रारूप फ़ंक्शंस बनाए, एक आपके अनुरोध के रूप में, और दूसरा वह जो एक फ्रेंडली स्ट्रिंग प्रिंट करता है और एकवचन / बहुवचन पर विचार करता है, और इसमें मिलीसेकंड दिखाने का विकल्प भी शामिल है।

function parseDuration(duration) {
  let remain = duration

  let days = Math.floor(remain / (1000 * 60 * 60 * 24))
  remain = remain % (1000 * 60 * 60 * 24)

  let hours = Math.floor(remain / (1000 * 60 * 60))
  remain = remain % (1000 * 60 * 60)

  let minutes = Math.floor(remain / (1000 * 60))
  remain = remain % (1000 * 60)

  let seconds = Math.floor(remain / (1000))
  remain = remain % (1000)

  let milliseconds = remain

  return {
    days,
    hours,
    minutes,
    seconds,
    milliseconds
  };
}

function formatTime(o, useMilli = false) {
  let parts = []
  if (o.days) {
    let ret = o.days + ' day'
    if (o.days !== 1) {
      ret += 's'
    }
    parts.push(ret)
  }
  if (o.hours) {
    let ret = o.hours + ' hour'
    if (o.hours !== 1) {
      ret += 's'
    }
    parts.push(ret)
  }
  if (o.minutes) {
    let ret = o.minutes + ' minute'
    if (o.minutes !== 1) {
      ret += 's'
    }
    parts.push(ret)

  }
  if (o.seconds) {
    let ret = o.seconds + ' second'
    if (o.seconds !== 1) {
      ret += 's'
    }
    parts.push(ret)
  }
  if (useMilli && o.milliseconds) {
    let ret = o.milliseconds + ' millisecond'
    if (o.milliseconds !== 1) {
      ret += 's'
    }
    parts.push(ret)
  }
  if (parts.length === 0) {
    return 'instantly'
  } else {
    return parts.join(' ')
  }
}

function formatTimeHMS(o) {
  let hours = o.hours.toString()
  if (hours.length === 1) hours = '0' + hours

  let minutes = o.minutes.toString()
  if (minutes.length === 1) minutes = '0' + minutes

  let seconds = o.seconds.toString()
  if (seconds.length === 1) seconds = '0' + seconds

  return hours + ":" + minutes + ":" + seconds
}

function formatDurationHMS(duration) {
  let time = parseDuration(duration)
  return formatTimeHMS(time)
}

function formatDuration(duration, useMilli = false) {
  let time = parseDuration(duration)
  return formatTime(time, useMilli)
}


console.log(formatDurationHMS(57742343234))

console.log(formatDuration(57742343234))
console.log(formatDuration(5423401000))
console.log(formatDuration(500))
console.log(formatDuration(500, true))
console.log(formatDuration(1000 * 30))
console.log(formatDuration(1000 * 60 * 30))
console.log(formatDuration(1000 * 60 * 60 * 12))
console.log(formatDuration(1000 * 60 * 60 * 1))


3

मानव-पठनीय उत्पादन के लिए मानव-पठनीय कोड और आप इसे प्रकाश वर्ष या नैनोसेकंड तक बढ़ा सकते हैं या आपके पास बहुत सहज रूप से क्या है। जाहिर है कि आप इसे फ़ंक्शन में बदलना चाहते हैं और उन मध्यवर्ती मॉडुलो कॉल में से कुछ का पुनः उपयोग कर सकते हैं।

second = 1000 
minute = second * 60
hour = minute * 60 
day = hour * 24

test = 3 * day + 2 * hour + 11 * minute + 58 * second

console.log(Math.floor(test / day))
console.log(Math.floor(test % day / hour))
console.log(Math.floor(test % day % hour / minute))
console.log(Math.floor(test % day % hour % minute / second))

2

@ उत्तर के आधार पर। यह टाइपस्क्रिप्ट में कार्यान्वयन है। जेएस में coercing प्रकार की तुलना में थोड़ा सुरक्षित। यदि आप हटाते हैं तो एनोटेशन वैध जेएस होना चाहिए। इसके अलावा समय को सामान्य करने के लिए नए स्ट्रिंग फ़ंक्शन का उपयोग करना।

function displayTime(millisec: number) {
 const normalizeTime = (time: string): string => (time.length === 1) ? time.padStart(2, '0') : time;

 let seconds: string = (millisec / 1000).toFixed(0);
 let minutes: string = Math.floor(parseInt(seconds) / 60).toString();
 let hours: string = '';

 if (parseInt(minutes) > 59) {
   hours = normalizeTime(Math.floor(parseInt(minutes) / 60).toString());
   minutes = normalizeTime((parseInt(minutes) - (parseInt(hours) * 60)).toString());
 }
 seconds = normalizeTime(Math.floor(parseInt(seconds) % 60).toString());

 if (hours !== '') {
    return `${hours}:${minutes}:${seconds}`;
 }
   return `${minutes}:${seconds}`;
}

1
किसी को यह उपयोगी लग सकता है।
केविनऑर्फ़स

1
JS टाइपस्क्रिप्ट की ओर विकसित हो रहा है। यह संभवत: जल्द ही जेएस मान्य होगा। :-)
N8allan

2

मेरे लिए काम किया

msToTime(milliseconds) {
    //Get hours from milliseconds
    var hours = milliseconds / (1000*60*60);
    var absoluteHours = Math.floor(hours);
    var h = absoluteHours > 9 ? absoluteHours : '0' + absoluteHours;

    //Get remainder from hours and convert to minutes
    var minutes = (hours - absoluteHours) * 60;
    var absoluteMinutes = Math.floor(minutes);
    var m = absoluteMinutes > 9 ? absoluteMinutes : '0' +  absoluteMinutes;

    //Get remainder from minutes and convert to seconds
    var seconds = (minutes - absoluteMinutes) * 60;
    var absoluteSeconds = Math.floor(seconds);
    var s = absoluteSeconds > 9 ? absoluteSeconds : '0' + absoluteSeconds;

    return h == "00" ? m + ':' + s : h + ':' + m + ':' + s;
}

1

मेरा समाधान

var sunriseMills = 1517573074000;         // sunrise in NewYork on Feb 3, 2018  - UTC time
var offsetCityMills = -5 * 3600 * 1000;   // NewYork delay to UTC 
var offsetDeviceMills =  new Date().getTimezoneOffset() * 60 * 1000 ;  // eg. I live in Romania (UTC+2) >> getTimezoneOffset() = 120

var textTime = new Date(sunriseMills + offsetCityMills + offsetDeviceMills) 
    .toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric' });

टेक्स्टटाइम ' 7.04 बजे ' बन जाएगा


1

@ रिक के जवाब पर विस्तार करते हुए, मैं कुछ इस तरह से पसंद करता हूं:

function msToReadableTime(time){
  const second = 1000;
  const minute = second * 60;
  const hour = minute * 60;

  let hours = Math.floor(time / hour % 24);
  let minutes = Math.floor(time / minute % 60);
  let seconds = Math.floor(time / second % 60);
 

  return hours + ':' + minutes + ":" + seconds;
}

0

यदि आप टाइपस्क्रिप्ट का उपयोग कर रहे हैं, तो यह आपके लिए एक अच्छी बात हो सकती है

enum ETime {
  Seconds = 1000,
  Minutes = 60000,
  Hours = 3600000,
  SecInMin = 60,
  MinInHours = 60,
  HoursMod = 24,
  timeMin = 10,
}

interface ITime {
  millis: number
  modulo: number
}

const Times = {
  seconds: {
    millis: ETime.Seconds,
    modulo: ETime.SecInMin,
  },
  minutes: {
    millis: ETime.Minutes,
    modulo: ETime.MinInHours,
  },
  hours: {
    millis: ETime.Hours,
    modulo: ETime.HoursMod,
  },
}

const dots: string = ":"

const msToTime = (duration: number, needHours: boolean = true): string => {
  const getCorrectTime = (divider: ITime): string => {
    const timeStr: number = Math.floor(
      (duration / divider.millis) % divider.modulo,
    )

    return timeStr < ETime.timeMin ? "0" + timeStr : String(timeStr)
  }

  return (
    (needHours ? getCorrectTime(Times.hours) + dots : "") +
    getCorrectTime(Times.minutes) +
    dots +
    getCorrectTime(Times.seconds)
  )
}

0

मेरे कार्यान्वयन में मैंने Moment.js का उपयोग किया:

export default (value) => 
  const duration = moment.duration(value);

  const milliseconds = duration.milliseconds();
  const seconds = duration.seconds();
  const minutes = duration.minutes();
  const hours = duration.hours();
  const day = duration.days();

  const sDay = `${day}d `;
  const sHours = (hours < 10) ? `0${hours}h ` : `${hours}h `;
  const sMinutes = (minutes < 10) ? `0${minutes}' ` : `${minutes}' `;
  const sSeconds = (seconds < 10) ? `0${seconds}" ` : `${seconds}" `;
  const sMilliseconds = `${milliseconds}ms`;

  ...
}

एक बार तार मिल जाने के बाद, मैंने जैसा चाहा, उनकी रचना की।


0

मैं मेरे लिए काम करता हूं क्योंकि मुझे जावास्क्रिप्ट विधि getTime () का उपयोग करके मिलीसेकंड = 1592380675409 मिलता है, जो 1 जनवरी, 1970 की मध्यरात्रि और निर्दिष्ट तिथि के बीच मिलीसेकंड की संख्या देता है।

var d = new Date();//Wed Jun 17 2020 13:27:55 GMT+0530 (India Standard Time)
var n = d.getTime();//1592380675409 this value is store somewhere

//function call 
console.log(convertMillisecToHrMinSec(1592380675409));

var convertMillisecToHrMinSec = (time) => {
  let date = new Date(time);
  let hr = date.getHours();
  let min = date.getMinutes();
  let sec = date.getSeconds();

  hr = (hr < 10) ? "0"+ hr : hr;
  min = (min < 10) ? "0"+ min : min;
  sec = (sec < 10) ? "0"+ sec : sec;

  return hr + ':' + min + ":" + sec;//01:27:55
}

अपना कोड बताएं, बिना स्पष्टीकरण के कोड खराब कोड है।
इस्लाम एलशोबोक्शी

सुझाव के लिए धन्यवाद, मैं निश्चित रूप से अपना समाधान बताता हूं
स्नेहा मोरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.