Javascript 使用Moment.js比较时间

Javascript 使用Moment.js比较时间,javascript,date,momentjs,Javascript,Date,Momentjs,我一直在玩,我遇到了一个问题。我一直在试图确定给定的日期是过去还是未来。日期存储为。所以,当我比较未来日期和当前日期时,它工作正常,但不会触发过去的日期。下面是示例代码,下面是一个示例代码 var pastUnixTime='1348812970'//过去的某个时候 var futureUnixTime='1352350231'; if(矩.unix(futureUnixTime).format('DD-MM-YYYY')>矩().format('DD-MM-YYYY')){ console.l

我一直在玩,我遇到了一个问题。我一直在试图确定给定的日期是过去还是未来。日期存储为。所以,当我比较未来日期和当前日期时,它工作正常,但不会触发过去的日期。下面是示例代码,下面是一个示例代码

var pastUnixTime='1348812970'//过去的某个时候
var futureUnixTime='1352350231';
if(矩.unix(futureUnixTime).format('DD-MM-YYYY')>矩().format('DD-MM-YYYY')){
console.log('yay');
}
if(矩.unix(pastUnixTime).format('DD-MM-YYYY')<矩().format('DD-MM-YYYY')){
console.log('yay 2');
}
​

上述代码记录的是
yay
不是
yay 2
。有谁能向我解释一下为什么它不记录
yay 2

您实际上根本不需要使用
.format()

首先,时间戳应该是数字,而不是字符串(例如,
var pastUnixTime=1348812970;
),其次,您可以直接比较它们:

> pastUnixTime = 1348812970;
> pastUnixTime < moment().unix()
true
> pastUnixTime > moment().unix() 
false

是的,但是我格式化它们的唯一原因是我想知道时间戳是否早于当前日期或更新。时间戳可能与矩()给出的当前时间戳不同,但仍然在同一天,这并不表示它在过去。编辑:我希望我没有太困惑:$太棒了-谢谢你-问题是字典的比较。啊,对不起,我没有注意到。有两种方法可以解决这个问题:要么比较字符串(请参见我的注释),要么使用
.startOf(“日”)
moment.unix(…).startOf(“日”)
。在我看来,后者更清楚,因为它使您的意图非常明显。没问题:)另外,请参阅我上一次编辑,关于甚至不需要使用
.unix()
@hereandnow 78
moment()
返回的对象实现了JavaScript在进行比较时使用的方法。
> pastUnixTime = 1348812970;
> pastUnixTime < moment().unix()
true
> pastUnixTime > moment().unix() 
false
> past = moment().subtract("days", 1)
> now = moment()
> past < now
true
> past > now
false