2016-03-07 77 views
0

這是我如何檢查日期是否大於第一週的結束日期。檢查一個日期是否大於一個月的第一週結束日期

有沒有更好的方法呢?

我還需要檢查時間和日期。

function getTodayDate() { 
    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth() + 1; //January is 0! 
    var yyyy = today.getFullYear(); 

    if (dd < 10) { 
    dd = '0' + dd 
    } 

    if (mm < 10) { 
    mm = '0' + mm 
    } 

    today = dd + '/' + mm + '/' + yyyy; 

    return today; 
} 

function getFirstWeekDate() { 
    var today = new Date(); 
    var dd = "7"; 
    var mm = today.getMonth() + 1; //January is 0! 
    var yyyy = today.getFullYear(); 

    if (dd < 10) { 
    dd = '0' + dd 
    } 

    if (mm < 10) { 
    mm = '0' + mm 
    } 

    return dd + '/' + mm + '/' + yyyy; 
} 

var startDate = getTodayDate(); 
var endDate = getFirstWeekDate(); 

var regExp = /(\d{1,2})\/(\d{1,2})\/(\d{2,4})/; 

if (parseInt(endDate.replace(regExp, "$3$2$1")) < parseInt(startDate.replace(regExp, "$3$2$1"))) 
{ 

} 
+0

看看[momentjs(http://momentjs.com/) – Zamboney

+0

有*是* javascript中的Date對象。當你轉換爲字符串時,它應該用於顯示用戶。如果那樣,你將它轉換成你可以比較的東西,那麼你可能做錯了什麼。 – Neil

回答

2

您的方法有幾個問題。

首先,你實際上並沒有檢查週末的日期。你只是將它與第七天進行比較,所以你真的要檢查日期是否是一個月的前六天,並且有更好的方法來檢查(例如調用getDate())。

其次,您試圖將日期視爲一個數字,但將最重要的數字(年份)放在最後,這是從他們應如何分類的事情中倒退出來的。這對你的具體做法很好,因爲在這個例子中月份和年份總是相同的,但如果你實際上比較了任何兩個日期,那就錯了。如果你包括時間,這是特別錯誤的。在這種情況下,你有兩個更好的解決方案

  1. 打開您的日期,(TZ一致或TZ免費)ISO 8601個日期這將排序正確。您可以使用DatetoISOString()方法來執行此操作。

  2. 使用庫如Moment.js進行日期操作和比較。

例如,如果你在now有個約會對象,你可以創建一個表示這個時刻的對象與

var nowMoment = moment(now); 

然後你可以使用各種操作和比較。例如,如果你想在本週由nowMoment代表的月底,你可以做到以下幾點,以獲得一個月的開始,然後在第一週結束

var weekEnd = moment(now).startOf('month').endOf('week'); 

然後,您可以比較這些。所以,如果你想知道,如果now變量是第一個星期結束前,你可以使用像

var isFirstWeek = nowMoment.isBefore(weekEnd); 
+0

感謝您的回覆!它確實工作:) – Debs

相關問題