gpt4 book ai didi

javascript - MomentJs 得到 "time until"有两个变量

转载 作者:行者123 更新时间:2023-12-01 04:03:03 24 4
gpt4 key购买 nike

我正在尝试让 moment.js 显示特定日期之前的时间。我已经这样做了:

let date = 2017-03-27T12:00:00;
moment().to(date);

这显示:“10 天后”。

我真的很希望它显示“10 天零 2 小时内”或两个最高值。例如,1 年零 5 个月4 分 30 秒

有没有简单的方法可以做到这一点?我目前正在研究一种复杂的方法来处理这个问题......

let years = moment(date).local().diff(moment(), 'years');
let months = (moment(date).local().diff(moment(), 'months'));
let days = (moment(date).local().diff(moment(), 'days'));
let hours = (moment(date).local().diff(moment(), 'hours'));
let minutes = (moment(date).local().diff(moment(), 'minutes'));
let seconds = (moment(date).local().diff(moment(), 'seconds'));

//The above values return total number each,
//For example, this could show 1 year, 14 months, 435 days, etc.
//The math below is supposed to make this say
//1 year, 2 months, 14 days, etc.

let yearsRemain = years;
let monthsRemain = months - (years *12);
let daysRemain = days - (Math.floor(months * 30));
let hoursRemain = hours - (days * 24);
let minutesRemain = minutes - (hours * 60);
let secondsRemain = seconds - (minutes * 60);

var dateArray = [
yearsRemain,
monthsRemain,
daysRemain,
hoursRemain,
minutesRemain,
secondsRemain
]

console.log(dateArray);

/*

returns [1, 1, 3, 23, 16, 46] for example

*/

问题在于几天。由于一年中的日子和一个月中的日子不同,我希望 moment.js 能帮助我。有更好的方法吗?

最终,我将能够迭代数组并找到两个最大值来显示我想要的方式。

最佳答案

您可以使用moment.duration计算 dateArray 值。持续时间有years() , months() , days() , hours() , minutes() , seconds() setter/getter 。

这是一个实例:

let date = '2017-03-27T12:00:00';
var dur = moment.duration( moment(date).diff(moment()) );

let yearsRemain = dur.years();
let monthsRemain = dur.months();
let daysRemain = dur.days();
let hoursRemain = dur.hours();
let minutesRemain = dur.minutes();
let secondsRemain = dur.seconds();

var dateArray = [
yearsRemain,
monthsRemain,
daysRemain,
hoursRemain,
minutesRemain,
secondsRemain
]

console.log(dateArray);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

您可以使用moment-duration-format以自定义格式显示持续时间的插件。该插件有一个 template可让您自定义格式的选项。

let date = '2017-03-27T12:00:00';
let dur = moment.duration( moment(date).diff(moment()) );
console.log( dur.format() );
console.log( dur.format('M [months and] d [days]') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

请注意,时刻有 relativeTime , relativeTimeRoundingrelativeTimeThreshold让您可以自定义时刻显示相对时间的方式(以便您可以将更改为输出)。

关于javascript - MomentJs 得到 "time until"有两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42031436/

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