gpt4 book ai didi

javascript - 在 AngularJS 中添加 momentJS 对象时出现问题

转载 作者:行者123 更新时间:2023-12-03 11:26:42 25 4
gpt4 key购买 nike

我有一个看起来像这样的对象:

var carsDict = { 
391: [
{
arrival: "17.43.49",
car: "391",
date: "11/11/2014",
duration: "00:00:06",
time: "17.43.43"
}
],

396: {
0: {
arrival: "17.20.48",
car: "396",
date: "11/11/2014",
duration: "00:00:11",
time: "17.20.37",
},
1: {
arrival: "17.21.27",
car: "396",
date: "11/11/2014",
duration: "00:00:17",
time: "17.21.10"
}
}
};

duration 属性是一个由以下行构造的 MomentJS 对象:

record.duration = moment.utc(moment(record.arrival,'HH:mm:ss')
.diff(moment(record.time,'HH:mm:ss'))).format("HH:mm:ss");

下一步是将每个数组中的所有持续时间对象添加在一起。我可以通过使用以下代码来做到这一点:

for (record in carsDict) {     
var totalduration = '';

for (item in carsDict[record]) {
// get totalduration figured out..
totalduration += moment.utc(carsDict[record][item].duration, 'HH:mm:ss');
}

for (item in carsDict[record]) {
// now add totalduration to each record
carsDict[record][item]['totalduration'] = totalduration;
}
};

根据上面的示例,第一个数组的 totalduration 应为 "00:00:06",第二个数组的 totalduration 应为 "00:00:28 " ("00:00:11"+ "00:00:17"),但我得到了其他结果,第一个结果为 1415750406000,第二个结果为 14157504110001415750417000。

我认为错误就在这一行,但我无法确切地看出为什么没有正确添加 moment() 对象。

totalduration += moment.utc(carsDict[record][item].duration, 'HH:mm:ss');

这是一个JSFiddle .

知道我做错了什么吗?

最佳答案

你的问题其实不在你想象的那一行,而是在这两行:

var totalduration = '';
totalduration += moment.utc(carsDict[record][item].duration, 'HH:mm:ss');

您从一个字符串开始并向其中添加一个时刻/日期对象。如果将 + 与字符串和任何其他对象一起使用,它会首先将该其他对象转换为基元,然后转换为字符串,然后连接两者:

“1”+ 0 ===“10”

因此,您得到的结果是由 moment 对象首先转换为基元引起的 - 在本例中是一个数字(您可以通过在 moment 对象上调用 valueOf 来确认这一点) - 并且然后是该数字的字符串表示形式。

您需要做的是计算总时间差(以毫秒为单位),因此从数字开始:

var totalduration = 0;

并在添加之前将 moment 对象转换为数字:

totalduration += Number(moment.utc(carsDict[record][item].duration, 'HH:mm:ss'));

然后使用 moment 解析这个数字(这是一个 Unix 时间戳,或者以毫秒为单位的总和),并在设置时对其进行格式化:

carsDict[record][item]['totalduration'] = moment.utc(totalduration).format('HH:mm:ss'); 

关于javascript - 在 AngularJS 中添加 momentJS 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com