首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在moment.js中将数千秒转换为h:mm:ss

在moment.js中将数千秒转换为h:mm:ss
EN

Stack Overflow用户
提问于 2015-09-28 07:29:14
回答 3查看 9.7K关注 0票数 3

我一直在看文档,但我不确定我做错了什么。我需要将7200转换为2:00:00。看起来很简单?以下是一些尝试:

代码语言:javascript
运行
复制
var duration = 7200;
var display = moment().seconds(duration).format("h:mm:ss");

还有..。

代码语言:javascript
运行
复制
var duration = 7200;
var display = moment.duration(duration, "seconds"); //can't chain on a format method?

格式返回正确,但数字都是错误的。如果我使用Math.round(7025.526)7025.526作为持续时间,我会得到9:19:06

如何成功将seconds转换为h:mm:ss

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-28 08:17:50

当您使用moment().seconds(duration)时,它将获取当前日期和时间,然后将秒组件设置为该值(溢出为分钟和小时)。如果你在不同的时间尝试它,你会看到结果发生了变化。

持续时间对象不能格式化为日期,因为它根本不是日期。这是一段时间长度,没有任何定义的起点或终点。

要转换秒,首先创建一个空的moment对象,它将是当前日期和时间0:00:00。然后,您可以设置秒数,它将溢出到分钟和小时。

您可能希望使用H而不是h来设置小时数的格式。这就避免了以12:nn:nn而不是0:nn:nn的形式获取少于一小时的时间

代码语言:javascript
运行
复制
var duration = 7200;
var display = moment({}).seconds(duration).format("H:mm:ss");
票数 11
EN

Stack Overflow用户

发布于 2015-09-28 07:36:43

代码语言:javascript
运行
复制
let duration = seconds;
let hours = duration/3600;
duration = duration % (3600);

let min = parseInt(duration/60);
duration = duration % (60);

let sec = parseInt(duration);

if (sec < 10) {
  sec = `0${sec}`;
}
if (min < 10) {
  min = `0${min}`;
}
if (parseInt(hours, 10) > 0) {
  return (`${parseInt(hours, 10)} : ${min} : ${sec}`)
}
return (`${min} : ${sec}`)

您可以通过计算小时、分钟和秒来手动完成

票数 3
EN

Stack Overflow用户

发布于 2015-09-28 08:36:38

使用moment-duration-format plugin

代码语言:javascript
运行
复制
var s = moment.duration(ms).format("h:mm:ss");

或者,只使用moment:

代码语言:javascript
运行
复制
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32813903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档