मैं HH-MM-SS
जावास्क्रिप्ट का उपयोग करके सेकंड को स्ट्रिंग में कैसे बदल सकता हूं ?
मैं HH-MM-SS
जावास्क्रिप्ट का उपयोग करके सेकंड को स्ट्रिंग में कैसे बदल सकता हूं ?
जवाबों:
क्या आप खजूर नहीं जानते हैं ? यह पता होना चाहिए।
डेटज का उपयोग करते हुए, जैसे कुछ लिखें:
(new Date).clearTime()
.addSeconds(15457)
.toString('H:mm:ss');
--अपडेट करें
आजकल date.js पुराना है और इसका रखरखाव नहीं किया जाता है, इसलिए " Moment.js " का उपयोग करें , जो कि TJ Crowder द्वारा बताया गया है।
- अद्यतन २
कृपया @ फ्रैंक का एक लाइन समाधान का उपयोग करें:
new Date(SECONDS * 1000).toISOString().substr(11, 8)
यह अब तक का सबसे अच्छा समाधान है।
TypeError: Object [object Date] has no method 'clearTime'
:।
आप निम्न की तरह जावास्क्रिप्ट तिथि पद्धति की सहायता से किसी भी बाहरी जावास्क्रिप्ट पुस्तकालय के बिना ऐसा करने का प्रबंधन कर सकते हैं:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
या, @Frank की टिप्पणी के अनुसार; एक लाइनर:
new Date(SECONDS * 1000).toISOString().substr(11, 8);
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
मुझे नहीं लगता कि मानक दिनांक ऑब्जेक्ट की कोई भी अंतर्निहित सुविधा आपके लिए ऐसा करेगी जो केवल स्वयं गणित करने की तुलना में अधिक सुविधाजनक है।
hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;
उदाहरण:
0.05
में वापस आ जाएंगे hours
। मैंने इसे parseInt
अपने मामले के लिए तय कर दिया, लेकिन मुझे नहीं लगता कि यह सब कुछ सही होगा। फिर भी, इससे मुझे मदद मिली, इसलिए धन्यवाद!
parseInt
, यह स्ट्रिंग को पार्स करने के लिए है , न कि संख्याओं में हेरफेर करने के लिए । Math.floor
यहां प्रासंगिक संचालन होगा।
seconds = Math.floor(totalSeconds % 60);
। मुझे अभी एक दशमलव परिणाम भी मिला है।
totalSeconds % 60
केवल एक भिन्नात्मक भाग हो सकता है यदि totalSeconds
भिन्नात्मक भाग हो। आप चाहे तो उस पर निर्भर रह सकते हैं, चाहे आप उस जानकारी को खोना चाहते हों या उसे बरकरार रखना चाहते हों। (अन्य मंजिल संचालन हम कर रहे हैं किसी भी जानकारी को, क्योंकि वे केवल अपना मनपसंद डेटा में खत्म हो जाएगा बाहर साफ़ किए जा रहे खोना नहीं है, minutes
और seconds
।)
console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
मुझे पता है कि यह थोड़े पुराना है, लेकिन ...
ES2015:
var toHHMMSS = (secs) => {
var sec_num = parseInt(secs, 10)
var hours = Math.floor(sec_num / 3600)
var minutes = Math.floor(sec_num / 60) % 60
var seconds = sec_num % 60
return [hours,minutes,seconds]
.map(v => v < 10 ? "0" + v : v)
.filter((v,i) => v !== "00" || i > 0)
.join(":")
}
यह उत्पादन होगा:
toHHMMSS(129600) // 36:00:00
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18
जैसा कि क्लेटन ने अपने उत्तर में बताया , क्षण.js का उपयोग इसके लिए किया जा सकता है:
moment().startOf('day')
.seconds(15457)
.format('H:mm:ss');
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
।
.format('YYYY DDD HH:mm:ss')
var timeInSec = "661"; //even it can be string
String.prototype.toHHMMSS = function () {
/* extend the String by using prototypical inheritance */
var seconds = parseInt(this, 10); // don't forget the second param
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor((seconds - (hours * 3600)) / 60);
seconds = seconds - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
var time = hours+':'+minutes+':'+seconds;
return time;
}
alert("5678".toHHMMSS()); // "01:34:38"
console.log(timeInSec.toHHMMSS()); //"00:11:01"
हम इस फ़ंक्शन को बहुत छोटा और कुरकुरा बना सकते हैं लेकिन यह पठनीयता कम कर देता है, इसलिए हम इसे यथासंभव सरल और यथासंभव स्थिर लिखेंगे।
इसे इस्तेमाल करे:
function toTimeString(seconds) {
return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
}
यहाँ संख्या वर्ग का विस्तार है। toHHMMSS () सेकंड को hh: mm: ss string में कनवर्ट करता है।
Number.prototype.toHHMMSS = function() {
var hours = Math.floor(this / 3600) < 10 ? ("00" + Math.floor(this / 3600)).slice(-2) : Math.floor(this / 3600);
var minutes = ("00" + Math.floor((this % 3600) / 60)).slice(-2);
var seconds = ("00" + (this % 3600) % 60).slice(-2);
return hours + ":" + minutes + ":" + seconds;
}
// Usage: [number variable].toHHMMSS();
// Here is a simple test
var totalseconds = 1234;
document.getElementById("timespan").innerHTML = totalseconds.toHHMMSS();
// HTML of the test
<div id="timespan"></div>
Noobies के लिए संस्करण का पालन करने के लिए आसान:
var totalNumberOfSeconds = YOURNUMBEROFSECONDS;
var hours = parseInt( totalNumberOfSeconds / 3600 );
var minutes = parseInt( (totalNumberOfSeconds - (hours * 3600)) / 60 );
var seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
console.log(result);
यह कार्य इसे करना चाहिए:
var convertTime = function (input, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
return [
pad(Math.floor(input / 3600)),
pad(Math.floor(input % 3600 / 60)),
pad(Math.floor(input % 60)),
].join(typeof separator !== 'undefined' ? separator : ':' );
}
विभाजक को पारित किए बिना, यह :
(डिफ़ॉल्ट) विभाजक के रूप में उपयोग करता है :
time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51
यदि आप -
एक विभाजक के रूप में उपयोग करना चाहते हैं , तो इसे दूसरे पैरामीटर के रूप में पास करें:
time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46
इस फिडल को भी देखें ।
:
लिए डिफ़ॉल्ट रूप में सेट है separator
, जैसा कि मैंने पहले ही समझाया था। यह कथन द्वारा किया गया है typeof separator !== 'undefined' ? separator : ':'
। इसके अलावा, आपका कार्य मेरे लिए कुछ कॉस्मेटिक परिवर्तनों को बचाने के लिए बहुत समान है और उन्हें दोनों एक ही आउटपुट का उत्पादन करना चाहिए ... सिवाय मेरे संस्करण के बहुत बेहतर ब्राउज़र समर्थन है। आपका इंटरनेट एक्सप्लोरर या एमएस एज <14. के किसी भी संस्करण में काम नहीं करेगा
नीचे दिया गया कोड है जो सेकंड को hh-mm-ss प्रारूप में बदल देगा:
var measuredTime = new Date(null);
measuredTime.setSeconds(4995); // specify value of SECONDS
var MHSTime = measuredTime.toISOString().substr(11, 8);
जावास्क्रिप्ट में एचएच-एमएम-एसएस प्रारूप में कन्वर्ट सेकंड से वैकल्पिक विधि प्राप्त करें
HH के विशेष मामले के लिए : MM: SS.MS (eq: "00: 04: 33.637") FFMPEG द्वारा मिलीसेकंड निर्दिष्ट करने के लिए उपयोग किया जाता है ।
[-] [HH:] MM: SS [मीटर ...]
HH अधिकतम 2 अंकों के लिए घंटों की संख्या, MM की संख्या और अधिकतम 2 अंकों के लिए सेकंड की संख्या को व्यक्त करता है। अंत में m, SS के लिए दशमलव मान को व्यक्त करता है।
/* HH:MM:SS.MS to (FLOAT)seconds ---------------*/
function timerToSec(timer){
let vtimer = timer.split(":")
let vhours = +vtimer[0]
let vminutes = +vtimer[1]
let vseconds = parseFloat(vtimer[2])
return vhours * 3600 + vminutes * 60 + vseconds
}
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
/* Example: 7hours, 4 minutes, 33 seconds and 637 milliseconds */
const t = "07:04:33.637"
console.log(
t + " => " +
timerToSec(t) +
"s"
)
/* Test: 25473 seconds and 637 milliseconds */
const s = 25473.637 // "25473.637"
console.log(
s + "s => " +
secToTimer(s)
)
उदाहरण का उपयोग, एक मिलीसेकंड परिवहन टाइमर:
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
let job, origin = new Date().getTime()
const timer = () => {
job = requestAnimationFrame(timer)
OUT.textContent = secToTimer((new Date().getTime() - origin) / 1000)
}
requestAnimationFrame(timer)
span {font-size:4rem}
<span id="OUT"></span>
<br>
<button onclick="origin = new Date().getTime()">RESET</button>
<button onclick="requestAnimationFrame(timer)">RESTART</button>
<button onclick="cancelAnimationFrame(job)">STOP</button>
उदाहरण का उपयोग, एक मीडिया तत्व के लिए बाध्य
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
VIDEO.addEventListener("timeupdate", function(e){
OUT.textContent = secToTimer(e.target.currentTime)
}, false)
span {font-size:4rem}
<span id="OUT"></span><br>
<video id="VIDEO" width="400" controls autoplay>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
प्रश्न के बाहर, php में लिखे गए कार्य:
<?php
/* HH:MM:SS to (FLOAT)seconds ------------------*/
function timerToSec($timer){
$vtimer = explode(":",$timer);
$vhours = (int)$vtimer[0];
$vminutes = (int)$vtimer[1];
$vseconds = (float)$vtimer[2];
return $vhours * 3600 + $vminutes * 60 + $vseconds;
}
/* Seconds to (STRING)HH:MM:SS -----------------*/
function secToTimer($sec){
return explode(" ", date("H:i:s", $sec))[0];
}
+ "." + p.getMilliseconds()
केवल २new Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
var time1 = date1.getTime();
var time2 = date2.getTime();
var totalMilisec = time2 - time1;
alert(DateFormat('hh:mm:ss',new Date(totalMilisec)))
/* ----------------------------------------------------------
* Field | Full Form | Short Form
* -------------|--------------------|-----------------------
* Year | yyyy (4 digits) | yy (2 digits)
* Month | MMM (abbr.) | MM (2 digits)
| NNN (name) |
* Day of Month | dd (2 digits) |
* Day of Week | EE (name) | E (abbr)
* Hour (1-12) | hh (2 digits) |
* Minute | mm (2 digits) |
* Second | ss (2 digits) |
* ----------------------------------------------------------
*/
function DateFormat(formatString,date){
if (typeof date=='undefined'){
var DateToFormat=new Date();
}
else{
var DateToFormat=date;
}
var DAY = DateToFormat.getDate();
var DAYidx = DateToFormat.getDay();
var MONTH = DateToFormat.getMonth()+1;
var MONTHidx = DateToFormat.getMonth();
var YEAR = DateToFormat.getYear();
var FULL_YEAR = DateToFormat.getFullYear();
var HOUR = DateToFormat.getHours();
var MINUTES = DateToFormat.getMinutes();
var SECONDS = DateToFormat.getSeconds();
var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var arrDay=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var strMONTH;
var strDAY;
var strHOUR;
var strMINUTES;
var strSECONDS;
var Separator;
if(parseInt(MONTH)< 10 && MONTH.toString().length < 2)
strMONTH = "0" + MONTH;
else
strMONTH=MONTH;
if(parseInt(DAY)< 10 && DAY.toString().length < 2)
strDAY = "0" + DAY;
else
strDAY=DAY;
if(parseInt(HOUR)< 10 && HOUR.toString().length < 2)
strHOUR = "0" + HOUR;
else
strHOUR=HOUR;
if(parseInt(MINUTES)< 10 && MINUTES.toString().length < 2)
strMINUTES = "0" + MINUTES;
else
strMINUTES=MINUTES;
if(parseInt(SECONDS)< 10 && SECONDS.toString().length < 2)
strSECONDS = "0" + SECONDS;
else
strSECONDS=SECONDS;
switch (formatString){
case "hh:mm:ss":
return strHOUR + ':' + strMINUTES + ':' + strSECONDS;
break;
//More cases to meet your requirements.
}
}
मैं सिर्फ ऊपर दिए गए अच्छे जवाब के बारे में थोड़ा स्पष्टीकरण देना चाहता था:
var totalSec = new Date().getTime() / 1000;
var hours = parseInt( totalSec / 3600 ) % 24;
var minutes = parseInt( totalSec / 60 ) % 60;
var seconds = totalSec % 60;
var result = (hours < 10 ? "0" + hours : hours) + "-" + (minutes < 10 ? "0" + minutes : minutes) + "-" + (seconds < 10 ? "0" + seconds : seconds);
दूसरी पंक्ति में, चूंकि 1 घंटे में 3600 सेकंड होते हैं, इसलिए हम कुल घंटों को प्राप्त करने के लिए कुल संख्या को 3600 से विभाजित करते हैं। हम किसी भी दशमलव को छीनने के लिए parseInt का उपयोग करते हैं। यदि टोटल सेस 12600 (3 और आधे घंटे) था, तो parseInt (टोटल सेस / 3600) 3 वापस आएगा, क्योंकि हमारे पास पूरे 3 घंटे होंगे। हमें इस मामले में% 24 की आवश्यकता क्यों है? यदि हम 24 घंटे से अधिक हो जाते हैं, मान लें कि हमारे पास 25 घंटे (90000 सेकंड) हैं, तो यहां मॉड्यूल हमें 25 को वापस करने के बजाय 1 बार फिर से 1 पर ले जाएगा। यह 24 घंटे की सीमा के भीतर परिणाम को सीमित कर रहा है, क्योंकि 24 घंटे हैं एक दिन में।
जब आप कुछ इस तरह देखते हैं:
25 % 24
इसके बारे में इस तरह से सोचें:
25 mod 24 or what is the remainder when we divide 25 by 24
इस पुराने सूत्र पर चिंतन करते हुए - ओपी ने एचएच: एमएम: एसएस और कई समाधानों के काम को कहा, जब तक आपको एहसास नहीं होता कि आपको सूचीबद्ध 24 घंटों से अधिक की आवश्यकता है। और शायद आप कोड की एक से अधिक पंक्ति नहीं चाहते हैं। हेयर यू गो:
d=(s)=>{f=Math.floor;g=(n)=>('00'+n).slice(-2);return f(s/3600)+':'+g(f(s/60)%60)+':'+g(s%60)}
यह H +: MM: SS देता है। इसका उपयोग करने के लिए, बस उपयोग करें:
d(91260); // returns "25:21:00"
d(960); // returns "0:16:00"
... मैंने एक अच्छा वन-लाइनर दृष्टिकोण के लिए, कम से कम कोड का उपयोग करने की कोशिश की।
क्या आपने किसी दिनांक ऑब्जेक्ट में सेकंड जोड़ने की कोशिश की है?
var dt = new Date();
dt.addSeconds(1234);
एक नमूना: https://jsfiddle.net/j5g2p0dc/5/
अपडेट किया गया: नमूना लिंक गायब था इसलिए मैंने एक नया बनाया।
addSeconds
डेट ऑब्जेक्ट पर कस्टम विधि का उपयोग कर रहे थे Date.prototype.addSeconds = function(seconds){...}
। हां, यह काम करता है, अपडेट के लिए धन्यवाद।
यहां powtac के उत्तर के आधार पर सेकंड को hh-mm-ss फॉर्मेट में बदलने का कार्य है
/**
* Convert seconds to hh-mm-ss format.
* @param {number} totalSeconds - the total seconds to convert to hh- mm-ss
**/
var SecondsTohhmmss = function(totalSeconds) {
var hours = Math.floor(totalSeconds / 3600);
var minutes = Math.floor((totalSeconds - (hours * 3600)) / 60);
var seconds = totalSeconds - (hours * 3600) - (minutes * 60);
// round seconds
seconds = Math.round(seconds * 100) / 100
var result = (hours < 10 ? "0" + hours : hours);
result += "-" + (minutes < 10 ? "0" + minutes : minutes);
result += "-" + (seconds < 10 ? "0" + seconds : seconds);
return result;
}
उदाहरण का उपयोग करें
var seconds = SecondsTohhmmss(70);
console.log(seconds);
// logs 00-01-10
सभी उत्तरों को देखने और उनमें से अधिकांश से खुश नहीं होने के बाद, यह वही है जो मैं लेकर आया हूं। मुझे पता है कि मुझे बातचीत में बहुत देर हो गई है, लेकिन यहाँ यह वैसे भी है।
function secsToTime(secs){
var time = new Date();
// create Date object and set to today's date and time
time.setHours(parseInt(secs/3600) % 24);
time.setMinutes(parseInt(secs/60) % 60);
time.setSeconds(parseInt(secs%60));
time = time.toTimeString().split(" ")[0];
// time.toString() = "HH:mm:ss GMT-0800 (PST)"
// time.toString().split(" ") = ["HH:mm:ss", "GMT-0800", "(PST)"]
// time.toTimeString().split(" ")[0]; = "HH:mm:ss"
return time;
}
मैं एक नई दिनांक ऑब्जेक्ट बनाता हूं, समय को अपने मापदंडों में परिवर्तित करता हूं, डेट ऑब्जेक्ट को टाइम स्ट्रिंग में परिवर्तित करता हूं, और स्ट्रिंग को विभाजित करके और केवल उस हिस्से को वापस करता हूं जो जरूरत है।
मुझे लगा कि मैं इस दृष्टिकोण को साझा करूंगा, क्योंकि यह "HH: mm: ss" प्रारूप में परिणाम प्राप्त करने के लिए regex, तर्क और गणित कलाबाजी की आवश्यकता को हटाता है, और इसके बजाय यह तरीकों में निर्मित पर निर्भर करता है।
आप यहाँ प्रलेखन पर एक नज़र रखना चाहते हैं: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
इस समस्या को हल करने के बहुत सारे विकल्प हैं, और स्पष्ट रूप से इसके बारे में सुझाए गए अच्छे विकल्प हैं, लेकिन मैं यहां एक और अनुकूलित कोड जोड़ना चाहता हूं
function formatSeconds(sec) {
return [(sec / 3600), ((sec % 3600) / 60), ((sec % 3600) % 60)]
.map(v => v < 10 ? "0" + parseInt(v) : parseInt(v))
.filter((i, j) => i !== "00" || j > 0)
.join(":");
}
अगर आप 10 नंबर से कम के फॉर्मेट वाले शून्य को नहीं चाहते हैं, तो आप उपयोग कर सकते हैं
function formatSeconds(sec) {
return parseInt(sec / 3600) + ':' + parseInt((sec % 3600) / 60) + ':' + parseInt((sec % 3600) % 60);
}
नमूना कोड http://fiddly.org/1c476/1
एक पंक्ति में, टीजे क्राउडर के समाधान का उपयोग कर:
secToHHMMSS = seconds => `${Math.floor(seconds / 3600)}:${Math.floor((seconds % 3600) / 60)}:${Math.floor((seconds % 3600) % 60)}`
एक पंक्ति में, एक और समाधान जो दिन भी गिनता है:
secToDHHMMSS = seconds => `${parseInt(seconds / 86400)}d ${new Date(seconds * 1000).toISOString().substr(11, 8)}`
स्रोत: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
आप नीचे दिए गए कोड का भी उपयोग कर सकते हैं:
int ss = nDur%60;
nDur = nDur/60;
int mm = nDur%60;
int hh = nDur/60;
new Date().toString().split(" ")[4];
परिणाम 15:08:03
AngularJS का उपयोग करने वाले किसी भी व्यक्ति के लिए, एक सरल उपाय यह है कि मूल्य को एपीआई के साथ फ़िल्टर किया जाए , जो मिलिसेकंड को अनुरोधित प्रारूप के आधार पर स्ट्रिंग में परिवर्तित करता है। उदाहरण:
<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>
ध्यान दें कि यह मिलीसेकंड की अपेक्षा करता है, इसलिए यदि आप सेकंड से परिवर्तित कर रहे हैं (जैसा मूल प्रश्न तैयार किया गया था) तो आप 1000 से गुणा कर सकते हैं।
मैं उस मामले में भाग गया, जहां कुछ लोगों ने उल्लेख किया है कि सेकंड की संख्या एक दिन से अधिक है। यहां @Hishish Anchu के टॉप-रेटेड उत्तर का एक अनुकूलित संस्करण है जो अधिक समय तक चलता है:
function secondsToTime(seconds) {
const arr = new Date(seconds * 1000).toISOString().substr(11, 8).split(':');
const days = Math.floor(seconds / 86400);
arr[0] = parseInt(arr[0], 10) + days * 24;
return arr.join(':');
}
उदाहरण:
secondsToTime(101596) // outputs '28:13:16' as opposed to '04:13:16'
String.prototype.toHHMMSS = function () {
var sec_num = parseInt(this, 10); // don't forget the second param
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
return hours+':'+minutes+':'+seconds;
}
उपयोग उदाहरण
alert("186".toHHMMSS());
यहां कोई भी उत्तर मेरी आवश्यकताओं को पूरा नहीं करता है क्योंकि मैं संभालना चाहता हूं
हालांकि उन लोगों को ओपी की आवश्यकता नहीं होती है, यह किनारे के मामलों को कवर करने के लिए अच्छा अभ्यास है, खासकर जब यह बहुत कम प्रयास करता है।
यह बहुत स्पष्ट है कि ओपी का अर्थ है सेकंड का एक नंबर जब वह सेकंड कहता है । आपके कार्य पर खूंटी क्यों लगेगी String
?
function secondsToTimeSpan(seconds) {
const value = Math.abs(seconds);
const days = Math.floor(value / 1440);
const hours = Math.floor((value - (days * 1440)) / 3600);
const min = Math.floor((value - (days * 1440) - (hours * 3600)) / 60);
const sec = value - (days * 1440) - (hours * 3600) - (min * 60);
return `${seconds < 0 ? '-':''}${days > 0 ? days + '.':''}${hours < 10 ? '0' + hours:hours}:${min < 10 ? '0' + min:min}:${sec < 10 ? '0' + sec:sec}`
}
secondsToTimeSpan(0); // => 00:00:00
secondsToTimeSpan(1); // => 00:00:01
secondsToTimeSpan(1440); // => 1.00:00:00
secondsToTimeSpan(-1440); // => -1.00:00:00
secondsToTimeSpan(-1); // => -00:00:01
secondsToTimeSpan(8991)
रिटर्न 6.00:05:51
जबकि मुझे लगता है कि यह लौटना चाहिए00:02:29:51
मैंने एक साधारण टाइमपास ऑब्जेक्ट बनाने से पहले इस कोड का उपयोग किया है:
function TimeSpan(time) {
this.hours = 0;
this.minutes = 0;
this.seconds = 0;
while(time >= 3600)
{
this.hours++;
time -= 3600;
}
while(time >= 60)
{
this.minutes++;
time -= 60;
}
this.seconds = time;
}
var timespan = new Timespan(3662);