gpt4 book ai didi

javascript - 更新 moment.js 持续时间

转载 作者:行者123 更新时间:2023-11-28 06:20:32 25 4
gpt4 key购买 nike

是否可以使用标准方法而不使用加/减方法来更新 moment.js 持续时间?

例如,创造时刻:

d = moment.duration({
seconds: 34,
minutes: 55,
hours: 2,
});

然后只更新分钟,但保持秒和小时相同?

我可以做这样的事情:

newD = moment.duration({
seconds: value.seconds(),
minutes: 32,
hours: value.hours(),
});

或者计算出我是否需要在原始内容中添加/减去,然后使用:

d.subtract(23).minutes();

但我觉得我在这里遗漏了一些明显的东西。

我不想立即添加/减去,而是想替换对象中存储的值之一,如 _data 中所示:

 _data: [object Object] {
days: 0,
hours: 1,
milliseconds: 0,
minutes: 20,
months: 0,
seconds: 0,
years: 0
},

即相当于:

d._data.minutes = 3;

但它还需要更新对象的其他属性。

最佳答案

查看 momentjs API(和代码),持续时间对象上似乎没有用于时间单位(小时、分钟、秒等)的 setter 方法。 momentjs 为这些时间单位提供的所有内容都是 getters。因此,实现此目的的一个好方法是在问题本身中执行此操作,即使用现有对象中的值创建一个新的持续时间对象。

var d = moment.duration({
seconds: 34,
minutes: 55,
hours: 2
});

var newD = moment.duration({
seconds: d.value(),
minutes: 32,
hours: d.value()
});

更新底层 _data 属性似乎会更新特定的时间单位,但它不会更新持续时间对象本身。所以像 humanize 这样的其他方法并不能为我们提供更新的值。

var d = moment.duration({
seconds: 34,
minutes: 55,
hours: 2
});

d.humanize() // '3 hours'
d._data.hours = 5;
d.hours() // 5 -> This is being updated
d.humanize() // '3 hours' -> This one isn't

关于javascript - 更新 moment.js 持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35581642/

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