瞬间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 , isBefore
, isSame
和isAfter
。
但是要确切地说明你正在尝试什么是有点困难的。 也许你只是想了解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 { }