2016-07-19 129 views
-4

我有這個日期函數:如何減去日期中的月份?

var isAnnual; 
var setupDate="05/09/2016" 
var currDate = new Date();//today 

我需要檢查,如果上面的的日期相減等於零。

任何想法是什麼來實現它的最佳方式?

+4

你搜索? ['[JavaScript的]日期月份difference'(https://stackoverflow.com/search?q=%5Bjavascript%5D+date+month+difference) –

回答

0

從最新獲取的月份和減去它

注:一個月從0即一月開始-0,十二月-11

var s= new Date("05/09/2016"); 
var currDate = new Date(); 
console.log(s.getMonth()-currDate.getMonth()); 
+1

這將工作僅在這兩個日期是在同一年。這會認爲例如5/9/2016和5/9/1999之間沒有區別。 – JJJ

+0

是的,你是對的,在這種情況下,你可以減去今年也再轉換一年個月, – abhirathore2006

0

我覺得這個問題是不是問很準確,因爲它並不真正欺騙你想要的東西,例如至少有以下選項:

1)你想當月與給定日期的月份,這是順便也並不準確格式化比較。 僞代碼爲:

givenDate := "05/09/2016"; 
currentDate := determineCurrentDate(); 

givenMonth := extractMonthFromDateString(givenDate); 
currentMonth := extractMonthFromDate(currentDate); 

return givenMonth = currentMonth; 

2)你想確定的currentdate是給定的日期 僞代碼爲月內:

givenDate := "05/09/2016"; 
currentDate := determineCurrentDate(); 

givenMonth := extractMonthFromDateString(givenDate); 
currentMonth := extractMonthFromDate(currentDate); 
givenYear := extractYearFromDateString(givenDate); 
currentYear := extractYearFromDate(currentDate); 

return givenMonth = currentMonth AND givenYear = currentYear; 
對於第一種方法

一個JS基礎的解決方案是第二個選項,真正容易構建出這一個:

var setupDate = "05/09/2016"; // Format: dd/mm/yyyy 
var currDate = new Date(); 
var monthsEqual = currDate.getMonth() == setupDate.replace(
     /(\d\d)\/(\d\d)\/(\d{4})/, // regex for dd/mm/yyyy 
     function(date, day, month, year){ // regard the order of the params 
      return new Date(year, parseInt(month)-1, parseInt(day)).getMonth(); 
     }); 

console.log(monthsEqual);