2012-09-06 240 views
0

我正在使用javascript日期和我开始疯狂:)javascript日期比较

我想两个只比较两个日期的年,月,日。我试图比较两个日期这样

[Date {Thu Feb 11 2010 12:00:00 GMT+0000 (GMT Standard Time)}] 

[Date {Sun Jul 11 2010 00:00:00 GMT+0100 (GMT Daylight Time)}] 

在这一点上:是(从萤火虫堆栈跟踪检索)的日期

if (datepickerBegin == null || datepickerBegin.length == 0 || datepickerBegin != date) { 
    //Do stuff 
} 

此代码显然是不行的,这是一个简单的比较这两个String的方法?

我想将此var转换为Date并连接到另一个var getMonth()+getYear()+getDay() ...但是 我相信有一个最简单的方法。

顺便说一句,为什么下面的线给NaN

new Date(datepickerBegin).getMonth() 

,但下面这行工作?

new Date(Date.parse(datepickerBegin.toString())).getMonth() 
+0

我相信你可以替换行:Date.parse(datepickerBegin.toString())。getMonth() – benams

+0

NaN问题是因为它期待一个字符串,而它得到的是一个int。 – Ryan

+1

@benams:Nope,'Date.parse()'返回一个数字,自Epoch以来毫秒。 –

回答

1

尝试使用.getTime()方法将日期转换为时间。如果日期相同,它们将具有从getTime返回的相同值。这假设你只为你的日期使用字符串值(即“9/6/12”)。如果您的日期有与之相关的时间戳,那么您需要使用setHours()函数将所有时间参考设置为0(d.setHours(0,0,0,0);)。

链接:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTime

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/setHours

例子:

if(datePickerBegin.getTime() === datePickerEnd.getTime()) 
{ 
    //...do something. 
} 

注:如果你最终去了.getMonth()路由,然后请注意该函数将月份作为基于零的数字返回,因此请将其返回1。

2

使用Date.parse(...);解析日期后,可以使用Date构造函数创建日期类型,如下所示。此过程的一个示例已被抽象为以下功能:

function parseDateAsDatePart(dateString) { 
    var parsedDate = new Date(Date.parse(dateString)); 
    return new Date(parsedDate.getYear(), parsedDate.getMonth(), parsedDate.getDate()); 
} 

将两个字符串都更改为Date对象后,您可以将它们如上所示进行比较。

注:如莱纳斯如上所述,Date.parse(...)返回一个整数,而不是一个日期对象,因此需要将其包裹在Date构造。