繁体   English   中英

Javascript Moment Time 添加时间计算错误

[英]Javascript Moment Time add Time Calculation wrong

我在Javascript 中使用Moment

我想增加时间,所以我尝试:

var time1 = moment("10:00:00", "HH:mm:ss");
var time2 = moment("00:03:15", "HH:mm:ss");
var add = time1.add(time2);
let format = moment.utc(add).format("HH:mm:ss")
console.log(format);

我预计我的format将是10:03:15但结果它给了我18:03:15我想知道为什么它为我增加了 8 小时,很好地认为是.utc问题,我尝试在没有.utc情况下执行如下:

let format = moment(add).format("HH:mm:ss")

它返回02:03:15

有点沮丧我不知道发生了什么

*顺便一提

var add1 = time3.add(5588280, 'ms');

*通过添加h, m, s, ms可以正常工作

add是双参数函数,需要第一个参数作为数字,第二个参数是时间圈数的数字类型。

即它以微秒为单位工作

time3.add(5588280, 'ms')

在这里你可以为你的问题做

const time1 = moment("10:00:00", "HH:mm:ss");
const time2 = moment("00:03:15", "HH:mm:ss");
         // get hours from time2 and add in time1
const add = time1.add(time2.format('mm'), 'hours')
        // add minutes using chain 
       .add(time2.format('mm'), 'minutes')
        // add seconds using add method from moment 
       .add(time2.format('ss'), 'seconds');

const format = moment(add).format("HH:mm:ss")

通过在将时间转换为 UTC 和格式的那一刻使用 UTC 使其成为时间字符串格式

moment(add).format("HH:mm:ss")
// Your required time:- 13:03:15
moment.utc(add).format("HH:mm:ss")
// required time in UTC:- 07:33:15

Ciao,使用 moment add您可以通过 3 种方式添加时间:

moment().add(Number, String);
moment().add(Duration);
moment().add(Object);

这是版本moment().add(Number, String);

 var time1 = moment("10:00:00", "HH:mm:ss"); var time2 = moment("00:03:15", "HH:mm:ss"); var add = moment(time1).add(time2.minutes(), "minutes").add(time2.seconds(), "seconds"); let format = add.format("HH:mm:ss"); console.log(format); // without utc let formatUtc = moment.utc(add).format("HH:mm:ss"); console.log(formatUtc); // with utc
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

这是版本moment().add(Object);

 var time1 = moment("10:00:00", "HH:mm:ss"); var time2 = moment("00:03:15", "HH:mm:ss"); var add = moment(time1).add({minutes: time2.minutes()}).add({seconds: time2.seconds()}); let format = add.format("HH:mm:ss"); console.log(format); // without utc let formatUtc = moment.utc(add).format("HH:mm:ss"); console.log(formatUtc); // with utc
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

你已经知道第三个版本了:)

您可以简单地使用时刻持续时间函数add两个时间相加,我们在这里使用额外的行代码(如分钟、秒或小时)来获得您想要的results

只需add duration add两次并将它们作为milliseconds ,然后根据需要format它们。

现场演示:

 let time1 = "10:00:00"; //string let time2 = "00:03:15"; //string let addTwoTimes = moment.duration(time1).add(moment.duration(time2)) //add two times let format = moment.utc(addTwoTimes.as('milliseconds')).format("HH:mm:ss") //format console.log(format); //10:03:15
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" integrity="sha512-rmZcZsyhe0/MAjquhTgiUcb4d9knaFc7b5xAfju483gbEXTkeJRUMIPk6s3ySZMYUHEcjKbjLjyddGWMrNEvZg==" crossorigin="anonymous"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM