我正在使用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条件。不知道为什么
2014-03-24T01:15:000>2014-03-24T01:14:000
我相信你正在寻找的查询功能,isBefore,isSame,和isAfter。
isBefore
isSame
isAfter
但是要确切地说出您要尝试的内容有点困难。也许您只是想了解输入时间和当前时间之间的时差?如果是这样,考虑差异功能,diff。例如:
diff
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
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');