Javascript Moment Time添加时间计算错误



我正在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添加到中可以很好地工作

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

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是双参数函数,需要第一个参数作为数字,第二个参数是时间圈中的数字类型。

即使用微秒

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

您可以简单地将持续时间函数用于add两次,我们一起使用而不是在此处使用额外的行代码(如分钟、秒或小时(来获得您想要的results

只需addduration两次,然后根据您的意愿将其作为millisecondsformat

现场演示:

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>

最新更新