簡體   English   中英

如何檢查兩個日期是否在同一日歷日

[英]How to check if two dates not on the same calendar day

如何檢查兩個日期是否在同一天。 我提出了這個解決方案,但也許有更好的方法來做到這一點:

 var actualDate = new Date();
 var isNotToday = dateToCheck.getDay() !== actualDate.getDay() || dateToCheck < actualDate - 24 * 60 * 60 * 1000;

另一種選擇是使用.toDateString()函數將兩個日期解析為字符串。 函數格式輸出到:“Wed Wed 28 1993”。 然后你可以比較兩個日期字符串。

actualDate.toDateString() === dateToCheck.toDateString()
// returns true if actualDate is same day as dateToCheck

這是一個Plunker:

http://plnkr.co/edit/J5Dyn78TdDUzX82T0ypA

還有更多來自MDN:

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

如何檢查同一天,一個月和一年:

var isSameDay = (dateToCheck.getDate() == actualDate.getDate() 
        && dateToCheck.getMonth() == actualDate.getMonth()
        && dateToCheck.getFullYear() == actualDate.getFullYear())

檢查日,月和年最安全:

var isNotToday = dateToCheck.getDate() != actualDate.getDate()
      || dateToCheck.getMonth() != actualDate.getMonth()
      || dateToCheck.getFullYear() != actualDate.getFullYear();

這將確保您在DST和閏年時不會產生奇怪的現象,否則可能會干擾。

function getStartOfDay(aDate){
    //returns the very beginning of the same day
    return new Date(aDate.getTime() - aDate.getTime() % 86400000);
}

var aDate1 = getStartOfDay(new Date());
var aDate2 = getStartOfDay(new Date(1981, 7, 3));

var result = aDate1.getTime() === aDate2.getTime();

不要用時間創建日期對象,因此它們都是在午夜生成的。 然后查看紀元時間。

new Date('11/12/2012').getTime() === new Date('11/11/2012').getTime()
> false
new Date('11/12/2012').getTime() === new Date('11/12/2012').getTime()
> true
new Date('November 12, 2012').getTime() === new Date('11/12/2012').getTime()
> true
new Date('12 November, 2012').getTime() === new Date('11/12/2012').getTime()
> true

日期只需要由Date對象解析(我在chrome 23.0.1271.17(Official Build 159779)beta),如果你沒有通過他們將在午夜生成的時間。

如果你有時間,只需將它放在地板上並在午夜時間進行測試。

 function isEqual(startDate, endDate) { return endDate.valueOf() == startDate.valueOf(); } var now =new Date(); var startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate()); var endDate = new Date(2017, 0, 13) var result = isEqual(startDate , endDate); console.log(result); 

Date實例使用startOf方法:

dateA.startOf('day').getTime() === dateB.startOf('day').getTime()

這是方法:

Date.prototype.startOf = function(unit) {
    var clone = new Date(this.getTime()), day;
    /* */if (unit === 'second') clone.setMilliseconds(0);
    else if (unit === 'minute') clone.setSeconds(0,0);
    else if (unit === 'hour'  ) clone.setMinutes(0,0,0);
    else {
        clone.setHours(0,0,0,0);
        if (unit === 'week') {
            day = clone.getDay();
            clone = day ? new Date(clone - 1000 * 60 * 60 * 24 * day) : clone;
        }
        else if (unit === 'month') clone.setDate(1);
        else if (unit === 'year' ) clone.setMonth(0,1);
    }
    return clone;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM