使用JavaScript将秒转换为HH-MM-SS?


Answers:


109

你不知道datejs吗?这是必须知道的。

使用datejs,只需编写如下内容:

(new Date).clearTime()
          .addSeconds(15457)
          .toString('H:mm:ss');

-更新

如今,date.js已过时且未维护,因此请使用“ Moment.js ”,这比TJ Crowder指出的要好得多。

-更新2

请使用@Frank的单行解决方案:

new Date(SECONDS * 1000).toISOString().substr(11, 8)

到目前为止,这是最好的解决方案。


11
@Yassir和Cleiton:FWIW,DateJS多年来没有得到维护,并且确实存在一些突出的错误(尽管据我所知,它们主要是关于解析和午夜)。moment.js看起来还不错,并且正在维护中。
TJ Crowder 2012年

1
@Cleiton,您更新的答案不完整。我按原样尝试并得到:TypeError: Object [object Date] has no method 'clearTime'
Hamish Grubijan'13 2013年

19
当然,Moment.js并不是很大,但是如果您要做的只是将秒转换为hh:mm:ss,似乎有点过头了。而是使用这些或其他答案中建议的功能之一。
奥拉·卡尔森

5
我认为其他解决方案比在混合中添加另一个js库更好。
多纳托

4
我认为不应该为一个简单的操作添加库。是的,这可行,但是有更好的解决方案!!!
安德里斯·

404

您可以借助JavaScript Date方法,无需任何外部JavaScript库就可以做到这一点,如下所示:

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);

39
我不知道为什么每个人都可以添加额外的库或在正确运行时手动进行数学运算。谢谢!
jminardi 2015年

98
这甚至可以缩短为一行: new Date(SECONDS * 1000).toISOString().substr(11, 8);
Frank

4
辉煌。没有任何第三方库。最好
Riz

41
这种方法的问题在于,它会在24小时后溢出,从而使您无法显示超出此时间长度的内容。如果您的秒数少于24小时,则是完美的解决方案。
雷纳托·伽马

1
这在IE11中对我不起作用,我得到Object doesn't support property or method 'toISOString'
NibblyPig

153

我认为标准Date对象的任何内置功能都不会比您自己做数学更方便。

hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;

例:


我认为这有一些问题吗?尝试时,我会返回小数,因此0.05hours变量将返回180秒。我把它放在一个parseInt可以固定我的情况的里面,但是我认为这对所有事情都不正确。不过,这对我有所帮助,非常感谢!
BT643

@ BT643:奇怪的是我没有处理。我现在已经这样做了,您不想使用parseInt它,那是为了解析字符串,而不是操纵数字。Math.floor将是这里的相关操作。
TJ Crowder 2014年

1
喔好吧!更改了我的代码。尽管您可能也确实希望在几秒钟内使用它:seconds = Math.floor(totalSeconds % 60);。我在那里也得到了十进制结果。
BT643

@ BT643:totalSeconds % 60如果只有小数部分,则只能有totalSeconds小数部分。是否要铺地板取决于您是要丢失该信息还是保留它。(我们正在执行的其他场操作不会丢失任何信息,因为它们只是清除将在minutes和中结束的数据seconds。)
TJ Crowder 2014年

8
@HannounYassirconsole.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Xavi Esteve

60

我知道这有点老,但是...

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

2
几分之一秒呢?03:45:45.xxx?
Mike Stoddart

1
@SantiagoHernández太好了!现在,它可以完美地运行超过24小时。
Stefnotch

2
+1。这个或TJ应该是公认的答案,因为那些是唯一适用于持续时间超过24小时的情况(并且问题不限制持续时间)。
乔治Y.19年

38

正如Cleiton在他的回答中指出的那样,moment.js可以用于此目的:

moment().startOf('day')
        .seconds(15457)
        .format('H:mm:ss');

5
如果秒数超过一天会怎样?
吉拉德·佩莱格

3
@GiladPeleg如果秒数超过一天,则内部计算天数,它将仅返回剩余的小时,分​​钟和秒。如果您还想计算天数,可以尝试moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
elquimista

9
如果秒数超过一年会怎样?
OrangePot

3
@OrangePot如果秒数超过一年,则内部计算年数,并且仅返回剩余的天,小时,分钟和秒。如果您也想计算年数,可以尝试.format('YYYY DDD HH:mm:ss')
David Callanan

1
但这不能成为可选的。这看起来很丑。
shaedrich '18

22
function formatSeconds(seconds)
{
    var date = new Date(1970,0,1);
    date.setSeconds(seconds);
    return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}

2
formatSeconds(3919); //返回01:05:19出色的功能..喜欢
Samrat Saha

17

这可以解决问题:

function secondstotime(secs)
{
    var t = new Date(1970,0,1);
    t.setSeconds(secs);
    var s = t.toTimeString().substr(0,8);
    if(secs > 86399)
        s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2);
    return s;
}

(来自此处


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

我们可以使此函数更短,更清晰,但会降低可读性,因此我们将使其编写得尽可能简单和稳定。

或者您可以在这里检查此工作:


此外...如果您想轻松地完成所有日期时间的事情..使用momentJS
sheelpriy

谢谢!无需在浏览器扩展中包含库。简单而有效!
阿罗

9

试试这个:

function toTimeString(seconds) {
  return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
}

7

这是Number类的扩展。toHHMMSS()将秒转换为hh:mm:ss字符串。

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>


5

易于遵循的新手版本:

 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);

5

这个函数应该做到这一点:

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

另请参阅此Fiddle


可以使用默认参数,例如(input,separator =“:”)。直到我对其进行了一些修改,它也没有返回任何内容。ee
p /

@madprops:实际上,正如我已经解释的那样,实际上我答案中的版本已设置:为该separator参数的默认版本。这是通过声明完成的typeof separator !== 'undefined' ? separator : ':'。另外,您的功能与我的功能几乎相同,只是保留了一些外观上的更改,并且它们都应产生相同的输出...除了我的版本具有更好的浏览器支持之外。你将无法在Internet Explorer或MS边缘<14的任何版本
约翰Slegers


5

对于FFMPEG用来指定毫秒HH:MM:SS.MS(eq:“ 00:04:33.637”)的特殊情况。

[-] [HH:] MM:SS [.m ...]

HH表示小时数,MM表示分钟数,最多2位,而SS表示秒数,最多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];  
}

1
您可以+ "." + p.getMilliseconds()通过使用 new Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
JayJay

1
看起来不错,是的,您的版本更快了:请参见基准jsben.ch/4sQY1 接受编辑!谢谢。
NVRM

4
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.
    }
}

4

我只想对上面的好答案做些解释:

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去除任何小数。如果totalSec为12600(3个半小时),则parseInt(totalSec / 3600)将返回3,因为我们将有3个完整小时。为什么在这种情况下我们需要%24?如果我们超过24小时,假设我们有25小时(90000秒),那么此处的模将使我们再次回到1,而不是返回25。这是将结果限制在24小时内,因为有24小时一天内。

当您看到类似这样的内容时:

25 % 24

这样想:

25 mod 24 or what is the remainder when we divide 25 by 24

4

在这个旧线程上运行-OP指出HH:MM:SS,许多解决方案都可以工作,直到您意识到需要列出超过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"

...我试图让它使用尽可能少的代码,这是一种很好的一线方法。


1
您是否也可以提供代码的扩展/读取版本,以便我们可以更轻松地了解正在发生的情况?谢谢。
Kimball

3

您是否尝试过向Date对象添加秒?

var dt = new Date();
dt.addSeconds(1234);

样本:https : //jsfiddle.net/j5g2p0dc/5/

更新:缺少示例链接,因此我创建了一个新链接。


未捕获的TypeError:dt.addSeconds不是函数
Ikrom

@Ikrom检查示例,由于旧代码返回了404错误,因此我在jsfiddle中创建了一个新代码
kpull1

看来我没有释放您正在addSeconds对Date对象使用自定义方法,例如Date.prototype.addSeconds = function(seconds){...}。是的,它可以工作,感谢您的更新。
Ikrom

2

这是基于powtac的回答秒转换到HH-MM-SS格式的功能,在这里

jsfiddle

/** 
 * 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

2

在查看了所有答案并且对大多数答案都不满意之后,这就是我想到的。我知道我的谈话时间很晚,但是无论如何还是在这里。

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

我创建一个新的Date对象,将时间更改为我的参数,将Date对象转换为时间字符串,并通过拆分字符串并仅返回需要的部分来删除其他内容。

我想我会分享这种方法,因为它无需使用正则表达式,逻辑和数学技巧即可以“ HH:mm:ss”格式获取结果,而是依靠内置方法。

您可能需要在此处查看文档:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date


2

有很多解决这个问题的方法,很明显,有很好的建议,但是我想在这里再添加一个优化的代码

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


2

在一行中,使用TJ Crowder的解决方案:

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


2
var sec_to_hms = function(sec){
var min, hours;
     sec = sec - (min = Math.floor(sec/60))*60;
     min = min - (hours = Math.floor(min/60))*60;
     return (hours?hours+':':'') + ((min+'').padStart(2, '0')) + ':'+ ((sec+'').padStart(2, '0'));
}
alert(sec_to_hms(2442542));

1

您还可以使用以下代码:

int ss = nDur%60;
nDur   = nDur/60;
int mm = nDur%60;
int hh = nDur/60;


1

对于使用AngularJS的任何人,一个简单的解决方案是使用date API过滤值,该API根据请求的格式将毫秒转换为字符串。例:

<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>

请注意,这期望以毫秒为单位,因此,如果您要从秒开始转换,则可能需要将timeRemaining乘以1000(因为最初的问题是公式化的)。


1

我遇到了有人提到秒数超过一天的情况。这是@Harish 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'

1
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());

1

我希望能够处理的所有答案都无法满足我的要求

  1. 大量的秒(天),并且
  2. 负数

尽管OP并不需要这些,但是覆盖一些极端情况是一种很好的做法,尤其是在不费力的情况下。

很明显的是,当他说秒钟时,OP意味着秒钟。为什么要固定您的功能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

1
secondsToTimeSpan(8991)返回,6.00:05:51而我认为它应该返回00:02:29:51
user1063287 '19

0

在创建简单的时间跨度对象之前,我曾使用以下代码:

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);

1
循环结果是一种非常糟糕的编码技术,永远都不要使用,它会占用您的处理能力并给您带来
麻烦的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.