2013-12-20 56 views
0

我想從dd/mm/yy格式的日期選擇器提交的任何日期起60天后以dd/mm/Y格式查找日期。 我試過尋找它,但我得到的是從今天的日期起60天! 請幫忙!!!如何找到日期在60天后在JavaScript中形成一個特定的日期?

+0

嗯..我非常新的JavaScript。 其實我正在使用PHP,但我需要一個JavaScript代碼來做到這一點,並自動更改文本框的值。所以我試着用date()做一些基本的事情,但沒有結果! – Genius

回答

0

這裏有三個不同的子問題。首先,將dd/mm/yy格式的輸入以 解析爲適合進行日期算術的對象。 做+60天算術。以dd/mm/Y格式格式化結果。

在我看來,Javascript有一個Date對象,可以用來做簡單的 算術。添加60天的日期是 容易,因爲

givenDate.setDate(givenDate.getDate() + 60) 

的的setDate方法負責超出範圍的數值,請參閱

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

爲了解析您可以提取年,月,日從在 串的DD/MM/YY格式(基本上使用字符串split()方法,和 供給三個值Date構造,如在

new Date(year, month, day) 

至於格式設置,可以使用Date對象獲取器函數在您的字符串上構建 。見

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

全碼:

function parse(dateStr) { 
    var parts = dateStr.split('/').map(function (digits) { 
    // Beware of leading zeroes... 
    return parseInt(digits, 10); 
    }); 
    return new Date(1900 + parts[2], parts[1], parts[0]); 
} 

function format(date) { 
    var parts = [ 
    date.getDate(), 
    date.getMonth(), 
    date.getYear() + 1900 
    ]; 
    if (parts[0] < 10) { 
    parts[0] = '0' + parts[0]; 
    } 
    if (parts[1] < 10) { 
    parts[1] = '0' + parts[1]; 
    } 
    return parts.join('/'); 
} 

function add(date, days) { 
    date.setDate(date.getDate() + days); 
    return date; 
} 

console.log(format(add(parse('11/06/83'), 60))); 
// Outputs: 09/08/1983 
0

如果要排除週末,使用以下:

var startDate = "9-DEC-2011"; 
startDate = new Date(startDate.replace(/-/g, "/")); 
var endDate = "", noOfDaysToAdd = 13, count = 0; 
while(count < noOfDaysToAdd){ 
    endDate = new Date(startDate.setDate(startDate.getDate() + 1)); 
    if(endDate.getDay() != 0 && endDate.getDay() != 6){ 
     //Date.getDay() gives weekday starting from 0(Sunday) to 6(Saturday) 
     count++; 
    } 
} 
// above code excludes weekends. 
alert(endDate);//You can format this date as per your requirement 

您可以參考以下問題爲同:

Add no. of days in a date to get next date(excluding weekends)

如果你想包括週末,使用以下內容:

var date = new Date(); 
date.setDate(date.getDate() + 32); 
// output will be Tue Jan 21 2014 15:55:56 GMT+0530 (India Standard Time) 
+0

它的好..但是如果我高壓包括週末太..我試圖改變,6至7,但仍然沒有得到所需的答案。 – Genius

+0

這更簡單,更新答案相同 –

+0

thnx ..但我猜這會給我相同的結果..(今天60天后).. – Genius

0

使用JavaScript日期對象的簡單的版本:

function toTheFuture(date, days){ 
    var split = userInput.split("/"), 
     //Split up the date and then process it into a Date object 
     userDate = new Date(+split[2]+2000, +split[1]-1, +split[0]); 

    //Add your days! 
    userDate.setDate(userDate.getDate() + days); 

    //Return your new dd/mm/yyyy formatted string! 
    return addZero(userDate.getDate())+"/"+addZero(userDate.getMonth()+1)+"/"+userDate.getFullYear() 
} 

//Ensures that if getDate() returns 8 for example, we still get it to output 08 
function addZero(num){ 
    if(num<10){ 
    num = "0"+num; 
    } 
    return ""+num; 
} 

toTheFuture("09/05/13", 60); 
//Will return 08/07/2013 

的javascript日期對象是稍微煩人使用比大多數想,有相當多的庫(例如MomentJS),它可以簡化它的工作,就像你期望的一樣

相關問題