我想從結束值中減去持續時間值。我怎么能用 moment.js 做到這一點?我目前收到錯誤。not valid ISO-8601 date format
let start = 1977
let end = 1985
let duration = moment(start.toString()).unix() - moment(end.toString()).unix();
let newvalue = = moment(end.toString()).unix() - moment(duration.toString()).unix();
我對持續時間的計算有效,所以我想為newvalue復制它,但這不起作用。我錯過了什么嗎?它必須是 ISO-8601 格式。
uj5u.com熱心網友回復:
您可以使用.addor.subtract方法添加/減去持續時間。
不是你的問題,但我希望持續時間是結束開始,而不是開始結束。
以下是它的作業原理:
let start = 1977
let end = 1985
let duration = moment(end.toString()).unix() - moment(start.toString()).unix();
let newvalue = moment(end.toString()).subtract(duration, "second");
console.log(newvalue.toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
請注意momentjs作者的資訊:
我們希望阻止 Moment 被用于未來的新專案
uj5u.com熱心網友回復:
這就是我使用moment.duration()and的方式diff()。
您可以使用 以天為單位asDays()或以小時為單位獲取持續時間asHours()。
請檢查以下片段:
let start = 1977
let end = 1985
let duration = moment.duration(moment(end.toString()).diff(moment(start.toString())));
console.log(duration.asDays())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
uj5u.com熱心網友回復:
duration應該已經以秒為單位表示持續時間,因此您可以從中減去moment(end.toString()).unix()(表示自 Unix 紀元以來的秒數):
let newvalue = moment(end.toString()).unix() - duration;
請記住,在您的代碼中,您end從值中減去該start值,這是負數,因為start < end. 我不認為這是故意的,因此您可以使用或Math.abs()減去end.start
uj5u.com熱心網友回復:
- 您需要從大值中減去小值。在你的情況下,你應該
subtract start from the end - 你在unix中獲得了持續時間值,所以你不需要再做一次
let start = 1977
let end = 1985
let duration = moment(end.toString()).unix() - moment(start.toString()).unix();
let newvalue = moment(end.toString()).unix() - duration;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494662.html
標籤:javascript 时刻
