दिलचस्प पोस्ट
मैं एडीबी (एंड्रॉइड प्लेटफ़ॉर्म-टूल्स) का उपयोग कर एक दूरस्थ चलने वाले डिवाइस पर कैसे आवेदन कर सकता / निष्पादित कर सकता हूं? संकेत करने के लिए शोर जोड़ने का उचित तरीका जावा में, जब मैं OutputStream.close कॉल करता हूं () मुझे पहले OutputStream.flush () कॉल करने की ज़रूरत है? दिनांक समय "शून्य" मान नेटवर्क साझा करने के लिए asp.net तक पहुंच उपयोगकर्ता के समयक्षेत्र में समय कैसे प्रदर्शित करें स्विफ्ट – IBOutletcollection समकक्ष रंग 1 और रंग 2 से लेकर एन रंग की ढाल सबसे अच्छा जावा ईमेल पता सत्यापन विधि क्या है? jQuery में गहरे बच्चे का चयन करें जावास्क्रिप्ट में GUID / यूयूआईडी बनाएँ? कैसे बताने के लिए। () प्रतीक्षा करने के लिए? मैं किसी विशिष्ट संपत्ति के साथ तत्वों में कैसे शामिल होता है? यह पता कैसे करें कि स्ट्रिंग में निहित मूल्य डबल है या नहीं सी में बड़ी संख्या के फ़ैक्टोरियल की गणना करना

सेकेंड में अधिक मानव पठनीय रूप में दिए गए समय अंतराल कन्वर्ट करें

मुझे कुछ मानव पठनीय रूपों में सेकेंड की संख्या के द्वारा दिए गए समय की मात्रा को परिवर्तित करने के लिए एक कोड स्निपेट की आवश्यकता है। फ़ंक्शन को एक संख्या प्राप्त करनी चाहिए और इस तरह एक स्ट्रिंग आउटपुट करनी चाहिए:

34 seconds 12 minutes 4 hours 5 days 4 months 1 year 

कोई स्वरूपण आवश्यक नहीं है, हार्ड-कोडित प्रारूप जाना होगा।

Solutions Collecting From Web of "सेकेंड में अधिक मानव पठनीय रूप में दिए गए समय अंतराल कन्वर्ट करें"

  function secondsToString(seconds) { var numyears = Math.floor(seconds / 31536000); var numdays = Math.floor((seconds % 31536000) / 86400); var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600); var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60); var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60; return numyears + " years " + numdays + " days " + numhours + " hours " + numminutes + " minutes " + numseconds + " seconds"; } 

रॉय की मदद से हमें एक ऐसा कोड मिल गया है जो मानव पठनीय रूप में समय अंतराल का उत्पादन करता है :

 function millisecondsToStr (milliseconds) { // TIP: to find current time in milliseconds, use: // var current_time_milliseconds = new Date().getTime(); function numberEnding (number) { return (number > 1) ? 's' : ''; } var temp = Math.floor(milliseconds / 1000); var years = Math.floor(temp / 31536000); if (years) { return years + ' year' + numberEnding(years); } //TODO: Months! Maybe weeks? var days = Math.floor((temp %= 31536000) / 86400); if (days) { return days + ' day' + numberEnding(days); } var hours = Math.floor((temp %= 86400) / 3600); if (hours) { return hours + ' hour' + numberEnding(hours); } var minutes = Math.floor((temp %= 3600) / 60); if (minutes) { return minutes + ' minute' + numberEnding(minutes); } var seconds = temp % 60; if (seconds) { return seconds + ' second' + numberEnding(seconds); } return 'less than a second'; //'just now' //or other string you like; } 

यदि आप एक मौजूदा जावास्क्रिप्ट लाइब्रेरी में रुचि रखते हैं जो नौकरी बहुत अच्छी तरह से करता है, तो आप moment.js को चेक कर सकते हैं।

अधिक विशेष रूप से, आपके प्रश्न के लिए प्रासंगिक moment.js टुकड़ा अवधि है ।

यहां कुछ उदाहरण दिए गए हैं कि आप अपने कार्य को प्राप्त करने के लिए इसका लाभ कैसे उठा सकते हैं:

 var duration = moment.duration(31536000); // Using the built-in humanize function: console.log(duration.humanize()); // Output: "9 hours" console.log(duration.humanize(true)); // Output: "in 9 hours" 

पल। जेएस ने 50+ मानव भाषाओं के लिए अंतर्निहित समर्थन दिया है, इसलिए यदि आप humanize() पद्धति का उपयोग करते हैं तो आपको मुफ्त में बहुभाषी सहायता मिलती है।

यदि आप सटीक समय की जानकारी प्रदर्शित करना चाहते हैं, तो आप moment.js के लिए क्षण-सटीक-श्रेणी प्लग-इन का लाभ ले सकते हैं जो इस उद्देश्य के लिए वास्तव में बनाया गया था:

 console.log(moment.preciseDiff(0, 39240754000); // Output: 1 year 2 months 30 days 5 hours 12 minutes 34 seconds 

ध्यान देने योग्य बात यह है कि फिलहाल moment.js अवधि वस्तु के लिए सप्ताह / दिन (सप्ताह में) का समर्थन नहीं करता है।

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

निम्नलिखित प्रयास करें:

 seconds = ~~(milliseconds / 1000); minutes = ~~(seconds / 60); hours = ~~(minutes / 60); days = ~~(hours / 24); weeks = ~~(days / 7); year = ~~(days / 365); 

ध्यान दें:

  • एक सामान्य वर्ष में 365 दिन हैं एक लीप वर्ष में 366 दिन हैं, इसलिए आपको अतिरिक्त जांच की आवश्यकता है अगर यह आपके लिए एक समस्या है।
  • डेलाइट सेविंग के साथ इसी तरह की समस्या कुछ दिनों में 23 और कुछ 25 घंटे जब समय बदल जाता है

निष्कर्ष: यह एक कठोर लेकिन छोटा और सरल स्निपेट है 🙂

 millisToTime = function(ms){ x = ms / 1000; seconds = Math.round(x % 60); x /= 60; minutes = Math.round(x % 60); x /= 60; hours = Math.round(x % 24); x /= 24; days = Math.round(x); return {"Days" : days, "Hours" : hours, "Minutes" : minutes, "Seconds" : seconds}; } 

यह एक पूर्णांक के रूप में मिलीसेकंड लेता है, और आपको एक JSON ऑब्जेक्ट दे सकता है जिसमें सभी जानकारी शामिल हो सकती है

रास्ता अधिक सरल और पठनीय

 milliseconds = 12345678; mydate=new Date(milliseconds); humandate=mydate.getUTCHours()+" hours, "+mydate.getUTCMinutes()+" minutes and "+mydate.getUTCSeconds()+" second(s)"; 

जो देता है:

"3 घंटे, 25 मिनट और 45 सेकेंड"

@ रॉय की प्रतिक्रिया के आधार पर स्विंग लिया:

 /** * Translates seconds into human readable format of seconds, minutes, hours, days, and years * * @param {number} seconds The number of seconds to be processed * @return {string} The phrase describing the the amount of time */ function forHumans ( seconds ) { var levels = [ [Math.floor(seconds / 31536000), 'years'], [Math.floor((seconds % 31536000) / 86400), 'days'], [Math.floor(((seconds % 31536000) % 86400) / 3600), 'hours'], [Math.floor((((seconds % 31536000) % 86400) % 3600) / 60), 'minutes'], [(((seconds % 31536000) % 86400) % 3600) % 60, 'seconds'], ]; var returntext = ''; for (var i = 0, max = levels.length; i < max; i++) { if ( levels[i][0] === 0 ) continue; returntext += ' ' + levels[i][0] + ' ' + (levels[i][0] === 1 ? levels[i][1].substr(0, levels[i][1].length-1): levels[i][1]); }; return returntext.trim(); } 

मेरे बारे में अच्छी बात यह है कि if कोई पुनरावृत्त नहीं है, और उदाहरण के लिए आपको 0 साल 0 दिन 30 मिनट 1 सेकेंड नहीं देंगे।

उदाहरण के लिए:

forHumans(60) आउटपुट 1 minute

forHumans(3600) आउटपुट 1 hour

और forHumans(13559879) आउटपुट 156 days 22 hours 37 minutes 59 seconds

 function millisecondsToString(milliseconds) { var oneHour = 3600000; var oneMinute = 60000; var oneSecond = 1000; var seconds = 0; var minutes = 0; var hours = 0; var result; if (milliseconds >= oneHour) { hours = Math.floor(milliseconds / oneHour); } milliseconds = hours > 0 ? (milliseconds - hours * oneHour) : milliseconds; if (milliseconds >= oneMinute) { minutes = Math.floor(milliseconds / oneMinute); } milliseconds = minutes > 0 ? (milliseconds - minutes * oneMinute) : milliseconds; if (milliseconds >= oneSecond) { seconds = Math.floor(milliseconds / oneSecond); } milliseconds = seconds > 0 ? (milliseconds - seconds * oneSecond) : milliseconds; if (hours > 0) { result = (hours > 9 ? hours : "0" + hours) + ":"; } else { result = "00:"; } if (minutes > 0) { result += (minutes > 9 ? minutes : "0" + minutes) + ":"; } else { result += "00:"; } if (seconds > 0) { result += (seconds > 9 ? seconds : "0" + seconds) + ":"; } else { result += "00:"; } if (milliseconds > 0) { result += (milliseconds > 9 ? milliseconds : "0" + milliseconds); } else { result += "00"; } return result; } 

मानव पठनीय प्रारूप में मिलीसेकंड में समय कन्वर्ट करने के लिए

  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" } } 

"नमूना दें"

यह फ़ंक्शन इस प्रारूप में सेकंड्स को आउटपुट करता है: 11h 22m, 1y 244d, 42m 4s आदि। जितना चाहें उतने आइडेंटिफ़ायर दिखाने के लिए अधिकतम चर सेट करें।

 function secondsToString (seconds) { var years = Math.floor(seconds / 31536000); var max =2; var current = 0; var str = ""; if (years && current<max) { str+= years + 'y '; current++; } var days = Math.floor((seconds %= 31536000) / 86400); if (days && current<max) { str+= days + 'd '; current++; } var hours = Math.floor((seconds %= 86400) / 3600); if (hours && current<max) { str+= hours + 'h '; current++; } var minutes = Math.floor((seconds %= 3600) / 60); if (minutes && current<max) { str+= minutes + 'm '; current++; } var seconds = seconds % 60; if (seconds && current<max) { str+= seconds + 's '; current++; } return str; } 

केवल आपको वही दिखाने के लिए जो दिन की नहीं, 0 घंटे, 0 …

 formatTime = function(time) { var ret = time % 1000 + ' ms'; time = Math.floor(time / 1000); if (time !== 0) { ret = time % 60 + "s "+ret; time = Math.floor(time / 60); if (time !== 0) { ret = time % 60 + "min "+ret; time = Math.floor(time / 60); if (time !== 0) { ret = time % 60 + "h "+ret; ... } } } return ret; }; 

दान जवाब की मदद से, मैं इस के साथ आया यदि आप पोस्ट बनाया समय (डीबी से यह यूटीसी के रूप में पुनः प्राप्त किया जाना चाहिए) और उपयोगकर्ता सिस्टम समय के बीच के अंतर की गणना करना चाहते हैं और फिर उन्हें बीते समय दिखाते हैं, तो आप उपयोग कर सकते हैं नीचे फ़ंक्शन

 function dateToStr(input_date) { input_date= input_date+" UTC"; // convert times in milliseconds var input_time_in_ms = new Date(input_date).getTime(); var current_time_in_ms = new Date().getTime(); var elapsed_time = current_time_in_ms - input_time_in_ms; function numberEnding (number) { return (number > 1) ? 's' : ''; } var temp = Math.floor(elapsed_time / 1000); var years = Math.floor(temp / 31536000); if (years) { return years + ' year' + numberEnding(years); } //TODO: Months! Maybe weeks? var days = Math.floor((temp %= 31536000) / 86400); if (days) { return days + ' day' + numberEnding(days); } var hours = Math.floor((temp %= 86400) / 3600); if (hours) { return hours + ' hour' + numberEnding(hours); } var minutes = Math.floor((temp %= 3600) / 60); if (minutes) { return minutes + ' minute' + numberEnding(minutes); } var seconds = temp % 60; if (seconds) { return seconds + ' second' + numberEnding(seconds); } return 'less than a second'; //'just now' //or other string you like; } 

उदाहरण: उपयोग

 var str = dateToStr('2014-10-05 15:22:16'); 

यह एक समाधान है बाद में आप ":" से विभाजित कर सकते हैं और सरणी के मान ले सकते हैं

  /** * Converts milliseconds to human readeable language separated by ":" * Example: 190980000 --> 2:05:3 --> 2days 5hours 3min */ function dhm(t){ var cd = 24 * 60 * 60 * 1000, ch = 60 * 60 * 1000, d = Math.floor(t / cd), h = '0' + Math.floor( (t - d * cd) / ch), m = '0' + Math.round( (t - d * cd - h * ch) / 60000); return [d, h.substr(-2), m.substr(-2)].join(':'); } //Example var delay = 190980000; var fullTime = dhm(delay); console.log(fullTime); 

मैं वस्तुओं का एक बड़ा प्रशंसक हूं, इसलिए मैंने इसे https://metacpan.org/pod/Time::Seconds से बनाया है

उपयोग:

 var human_readable = new TimeSeconds(986543).pretty(); // 11 days, 10 hours, 2 minutes, 23 seconds ;(function(w) { var interval = { second: 1, minute: 60, hour: 3600, day: 86400, week: 604800, month: 2629744, // year / 12 year: 31556930 // 365.24225 days }; var TimeSeconds = function(seconds) { this.val = seconds; }; TimeSeconds.prototype.seconds = function() { return parseInt(this.val); }; TimeSeconds.prototype.minutes = function() { return parseInt(this.val / interval.minute); }; TimeSeconds.prototype.hours = function() { return parseInt(this.val / interval.hour); }; TimeSeconds.prototype.days = function() { return parseInt(this.val / interval.day); }; TimeSeconds.prototype.weeks = function() { return parseInt(this.val / interval.week); }; TimeSeconds.prototype.months = function() { return parseInt(this.val / interval.month); }; TimeSeconds.prototype.years = function() { return parseInt(this.val / interval.year); }; TimeSeconds.prototype.pretty = function(chunks) { var val = this.val; var str = []; if(!chunks) chunks = ['day', 'hour', 'minute', 'second']; while(chunks.length) { var i = chunks.shift(); var x = parseInt(val / interval[i]); if(!x && chunks.length) continue; val -= interval[i] * x; str.push(x + ' ' + (x == 1 ? i : i + 's')); } return str.join(', ').replace(/^-/, 'minus '); }; w.TimeSeconds = TimeSeconds; })(window); 

मैंने दूसरे उत्तरों में से एक को साफ़ कर दिया है, थोड़ा 'अच्छा' 10 सेकंड पहले शैली स्ट्रिंग प्रदान करता है:

 function msago (ms) { function suffix (number) { return ((number > 1) ? 's' : '') + ' ago'; } var temp = ms / 1000; var years = Math.floor(temp / 31536000); if (years) return years + ' year' + suffix(years); var days = Math.floor((temp %= 31536000) / 86400); if (days) return days + ' day' + suffix(days); var hours = Math.floor((temp %= 86400) / 3600); if (hours) return hours + ' hour' + suffix(hours); var minutes = Math.floor((temp %= 3600) / 60); if (minutes) return minutes + ' minute' + suffix(minutes); var seconds = Math.floor(temp % 60); if (seconds) return seconds + ' second' + suffix(seconds); return 'less then a second ago'; }; 

@न के समान दृष्टिकोण के बाद, मैंने रोमी नामिर के कोड को कॉमा के साथ स्ट्रिंग आउटपुट करने के लिए संशोधित किया है और और है:

 secondsToString = function(seconds) { var numdays, numhours, nummilli, numminutes, numseconds, numyears, res; numyears = Math.floor(seconds / 31536000); numdays = Math.floor(seconds % 31536000 / 86400); numhours = Math.floor(seconds % 31536000 % 86400 / 3600); numminutes = Math.floor(seconds % 31536000 % 86400 % 3600 / 60); numseconds = seconds % 31536000 % 86400 % 3600 % 60; nummilli = seconds % 1.0; res = []; if (numyears > 0) { res.push(numyears + " years"); } if (numdays > 0) { res.push(numdays + " days"); } if (numhours > 0) { res.push(numhours + " hours"); } if (numminutes > 0) { res.push(numminutes + " minutes"); } if (numseconds > 0) { res.push(numminutes + " seconds"); } if (nummilli > 0) { res.push(nummilli + " milliseconds"); } return [res.slice(0, -1).join(", "), res.slice(-1)[0]].join(res.length > 1 ? " and " : ""); }; 

इसके पास कोई अवधि नहीं है इसलिए कोई भी उसके बाद वाक्यों को जोड़ सकता है, यहां पर:

 perform: function(msg, custom, conn) { var remTimeLoop; remTimeLoop = function(time) { if (time !== +custom[0]) { msg.reply((secondsToString(time)) + " remaining!"); } if (time > 15) { return setTimeout((function() { return remTimeLoop(time / 2); }), time / 2); } }; // ... remTimeLoop(+custom[0]); } 

जहां custom[0] का इंतजार करने का कुल समय है; यह समय 2 से विभाजित रखेगा, टाइमर समाप्त होने तक शेष समय की चेतावनी, और समय 15 सेकंड से कम होने के बाद चेतावनी को रोक देगा।

 function secondsToTimeString(input) { let years = 0, days = 0, hours = 0, minutes = 0, seconds = 0; let ref = [31536000,86400,3600,60,1]; for (let i = 0;i < ref.length;i++) { let val = ref[i]; while (val <= input) { input -= val; if (i === 0) years++; if (i === 1) days++; if (i === 2) hours++; if (i === 3) minutes++; if (i === 4) seconds++; } 

वापसी {साल, दिन, घंटे, मिनट, सेकंड}; }