我正在使用 moment.js 来格式化我的日期时间,这里我有两个日期值,我想在一个日期大于另一个日期时实现一个特定的功能。我阅读了他们的大部分文档,但没有找到实现这一点的功能。我知道它会在那里。
这是我的代码:
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date
var now = new Date(),
dnow = moment(now).tz('UTC'),
snow = dnow.minute() % 15,
diffnow = 15 - snow,
tonow = moment(dnow).add('minute', diffnow),
ahead30now = moment(tonow).add('minute', 30);
if (d > ahead30now) {
// allow input time
console.log('UTC TIME DB', d.format());
} else {
}
编辑
var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
console.log('is after true');
} else {
console.log('is after is false');
}
在这里,我比较两个日期,即 2014-03-24T01:15:000 > 2014-03-24T01:14:000
,期望第一个大于第二个,但它总是进入 else 条件。不知道为什么?
最佳答案
我相信您正在寻找 query functions 、isBefore
、isSame
和 isAfter
。
但是要准确地判断您正在尝试什么有点困难。也许您只是想了解输入时间和当前时间之间的差异?如果是这样,请考虑 difference function , 差异
。例如:
moment().diff(date_time, 'minutes')
其他一些事情:
第一行有错误:
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
那是行不通的。我想你的意思是:
var date_time = '2013-03-24' + 'T' + '10:15:20:12' + 'Z';
当然,你也可以:
var date_time = '2013-03-24T10:15:20:12Z';
您正在错误地使用:
.tz('UTC')
。.tz
属于 moment-timezone .除非您使用其他时区,例如America/Los_Angeles
,否则您不需要使用它。如果要将值解析为 UTC,则使用:
moment.utc(theStringToParse)
或者,如果您想解析本地值并将其转换为 UTC,则使用:
moment(theStringToParse).utc()
或者你根本不需要它。仅仅因为输入值是 UTC,并不意味着您必须在整个函数中使用 UTC。
您似乎正在通过
moment(new Date())
获取“现在”实例。您可以改为使用moment()
。
更新
根据您的编辑,我认为您可以这样做:
var date_time = req.body.date + 'T' + req.body.time + 'Z';
var isafter = moment(date_time).isAfter('2014-03-24T01:14:00Z');
或者,如果您想确保验证您的字段格式正确:
var m = moment.utc(req.body.date + ' ' + req.body.time, "YYYY-MM-DD HH:mm:ss");
var isvalid = m.isValid();
var isafter = m.isAfter('2014-03-24T01:14:00Z');
关于javascript - Moment js日期时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600856/