瞬间jsdate时间比较

我正在使用moment.js格式化我的date时间,在这里我有两个date值,并且我想在一个date大于另一个date时实现特定的function。 我读了大部分的文档,但是没有find实现这个function的function。 我知道它会在那里,请帮我找出来,谢谢。

这是我的代码

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'); } 

在这里,我比较了两个date,即2014-03-24T01:15:000 > 2014-03-24T01:14:000 ,期望第一个date大于第二个date,但总是进入其他条件。 我不知道为什么?

我相信你正在寻找查询function , isBeforeisSameisAfter

但是要确切地说明你正在尝试什么是有点困难的。 也许你只是想了解input时间和当前时间之间的差异? 如果是这样,考虑差异函数 , 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 ,否则您不需要使用该function。

    如果你想分析一个值为UTC,那么使用:

     moment.utc(theStringToParse) 

    或者,如果要parsing本地值并将转换为UTC,请使用:

     moment(theStringToParse).utc() 

    或者也许你根本不需要它。 只是因为input值是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'); 

或者,如果您想确保您的字段经过validation的格式正确:

 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'); 

你应该能够直接比较它们。

 var date = moment("2013-03-24") var now = moment(); if (now > date) { // date is past } else { // date is future } 
 $(document).ready(function() { $('.compare').click(function(e) { var date = $('#date').val(); var now = moment(); var then = moment(date); if (now > then) { $('.result').text('Date is past'); } else { $('.result').text('Date is future'); } }); }); 
 <script src="ajax/libs/moment.js/2.10.3/moment.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <input type="text" name="date" id="date" value="2014-12-18" placeholder="yyyy-mm-dd"> <button class="compare">Compare date to current date</button> <br> <div class="result"></div> 

Jsfiddle: http : //jsfiddle.net/guhokemk/1/

  function compare(dateTimeA, dateTimeB) { var momentA = moment(dateTimeA,"DD/MM/YYYY"); var momentB = moment(dateTimeB,"DD/MM/YYYY"); if (momentA > momentB) return 1; else if (momentA < momentB) return -1; else return 0; } alert(compare("11/07/2015", "10/07/2015")); 

如果dateTimeA大于dateTimeB,则该方法返回1

如果dateTimeA等于dateTimeB,则该方法返回0

如果dateTimeA小于dateTimeB,则方法返回-1

通过date到这样的时刻它会比较并给出结果。 如果你不想格式删除它

 moment(Date1).format("YYYY-MM-DD") > moment(Date2).format("YYYY-MM-DD") 
 moment(d).isAfter(ahead30now); // true 

http://momentjs.com/docs/#/query/is-after/

 if (moment(d).isAfter(ahead30now)) { // allow input time console.log('UTC TIME DB', d.format()); } else { }