2016-02-23 100 views
1

是否有可能使用標準方法更新一個moment.js持續時間而不使用add/subtract方法?更新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; 

但它也需要更新對象的其他屬性。

+0

我可能誤解了你的問題。讓我知道如果我這樣做,以便我可以更好地理解您的問題並更新答案 – satish

回答

0

看着js API(和代碼),似乎沒有對時間單位(小時,分鐘,秒等)的持續時間對象的setter方法。所有這些時間單位都是獲得者。所以一個很好的方法就是在問題本身中這樣做,使用現有值創建一個新的持續時間對象。

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

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

更新底層_data屬性似乎更新的具體時間單位,但它不更新時間對象本身。所以像人性化這樣的其他方法並不能爲我們提供更新的價值。

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 
+0

感謝您的回答,但它不是我所期待的。我已經更新了這個問題,以便更清楚一點。 –

+0

@ MattO'Keefe我根據更新的問題更新了我的答案。希望它有助於:) – satish

+0

感謝satish,我想我只需要這樣做! –