- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让 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
, relativeTimeRounding
和 relativeTimeThreshold
让您可以自定义时刻显示相对时间的方式(以便您可以将更改为
输出)。
关于javascript - MomentJs 得到 "time until"有两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42031436/
我正在尝试比较两个日期。我想检查一个日期是否早于另一个日期。我正在使用 momentjs,我所做的一切似乎都返回 false。任何帮助,将不胜感激。 Format - [Month, Year] mo
我正在尝试比较两个日期。我想检查一个日期是否早于另一个日期。我正在使用 momentjs,我所做的一切似乎都返回 false。任何帮助,将不胜感激。 Format - [Month, Year] mo
使用Moment.js将小时分钟转换为十进制时间的最佳方法是什么 假设我有1:30分钟,我想在转换后有1.5分钟 这是我尝试过的 console.log(travelTime().split(':')
我刚刚创建了一个 Ghost.org 博客,我希望博客发布日期比实际撰写日期提前一年显示。我知道 Ghost 使用 Moment.js 并且我能够调整格式(DD MM YYYY、YY MM DD 等.
我是 moment.js 的新手。我想将毫秒转换为天。当我在谷歌中尝试使用普通转换器时,它显示 377.7613437963 days ,但以编程方式显示 11 days . var duration
我有一个像“Thu Sep 01 2016 00:00:00 GMT+0530 (IST)”这样的日期,我需要将它作为 ISO-8601 UTC 时间发送到服务器。我试过: moment(mydate
我正在使用时刻时区来设置默认时间 $moment.tz.setDefault('欧洲/伦敦'); $moment().toString(); 正在为我提供定义时区的时间。但我需要时间戳。所以我正在使用
我有一个像"10/14/2014 5:30:00 AM"这样的字符串。我需要将其解析为UTC字符串。但是,当我执行moment.utc("10/14/2014 5:30:00 AM").format(
var startDate = moment("2017-06-30 00:00 +0000", "YYYY-MM-DD HH:mm Z"); var endDate = startDate.clo
我试图确定一个时刻对象是否使用时间值(除了日期)进行了实例化。例如: var date = moment("2014-01-16"); date.format("h:mm a"); // 12:00
我有一个简单的系统,它在节点创建表单上允许用户选择开始和结束日期以及小时和分钟: 问题是日期在中间的某个地方搞砸了,或者我不知道如何转换它。 在数据库中,两个值被保存如下: start: "2019-
我想用 moment.js 计算常见的日期范围,例如: * 昨天 * 星期 * 本周至今 * 四分之一 * 季度至今 等等。我没有在 Stackoverflow 上找到我想要的东西,所以我想我会为其他
我想使用 momentjs 来检查无效的日期/时间字符串: var invalid = '2017-03-18 23;00;00'; if (moment(invalid).isValid()) {
嗨,我目前在我的项目中使用 momentjs 作为我的日期,并且在减去 2 个日期时遇到了一些麻烦。 这是我的示例日期: 2016-10-08 10:29:23 2016-10-08 11:06:55
我正在使用moment js转换日期变量格式 moment("23MAY68", 'DDMMMYY').format('YYYY-MM-DD'); moment("23MAY99", 'DDMMMYY
我在使用 momentjs 库时遇到问题 线 moment("Mon Oct 14 01:00:00 GMT 2013") parses correctly 但线 moment("Mon Oct 1
我有一个函数可以获取格式为 YYYY-MM-DD 的日期键,例如。 2021-03-29(星期一)获取其周数 (13),并使用它获取该周数的星期一,如果是 2021-03-29,则为同一天,如果是 2
我需要获得从现在到今天的特定小时的秒数。 moment().diff(moment().hour(23), 'seconds'); 精度总是以小时为单位,我需要以秒为单位。 例如,如果现在是 15:2
我正在尝试使用时刻来开始新的一天。我得到以下不同的结果: moment().startOf('day'); //good moment(new Date()).startOf('day'); //th
我有一个简单的用例,但我无法在moment.js中弄清楚如何从GMT / UTC转换为本地时间。 例: var gmtDateTime = moment.utc("2015-10-24 20:00",
我是一名优秀的程序员,十分优秀!