2016-01-21 19 views
0

我有一個變量範圍是這個樣子:功能,它檢查的多種格式的日期在這個範圍內

startDate = 2015-12-01 endDate = 2015-12-31

我還有一個約會,我需要檢查的範圍內,看起來像範圍這樣的:

dateToCheck = 01/15/2016

我試圖寫它返回一個true或false的日期是否在範圍內的函數:

function dateInRange(date, startDate, endDate) { 

} 

在PHP中,你可以將任何日期字符串轉換爲時間戳,我不知道如何在Javascript中使用多種格式來做到這一點?

+1

您可以使用['功能。 getTime'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)。 –

+0

你也可以將它們轉換爲字符串:YYYY-MM-DD並且以這種方式比較它們,但是用時間戳做的更好可能是 – Gavriel

+0

你有''Date.parse()'](https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse),或者像[Moment.js](http://momentjs.com/)這樣的庫具有更智能的日期解析器。 – Blazemonger

回答

4

您可以創建解析日期和返回日期對象

function createDate(date) { 
    if (date.indexOf('-') !== -1) { 
     var parts = date.split('-'); 
     return new Date(parts[0], parts[1]-1, parts[2]); 
    } else if (date.indexOf('/') !== -1) { 
     var parts = date.split('/'); 
     return new Date(parts[2], parts[0]-1, parts[1]); 
    } else { 
     return new Date(date); 
    } 

} 

然後你就可以解析日期,並做

function dateInRange(date, startDate, endDate) { 

    return date > startDate && date < endDate; 

} 

FIDDLE

+0

返回新日期(日期)|| 0;是不是很有用,因爲它有時會返回日期,有時是整數0 – Gavriel

+0

@Gavriel - 它只是爲'''比較等返回一個數字,而不是字符串'無效日期' – adeneo

+0

但其他返回返回日期。也許你打算在任何地方返回新的Date(...)。getTime()?仍然爲什麼一個格式錯誤的日期字符串需要指1970-01-01? – Gavriel