2016-09-15 120 views
1

我有這個網站:如何在jQuery中計算日期,並將輸入日期的值設置爲該值?

<input class="smalldatepicker" type="date" id="datepickerFrom" value="2016-09-04"> 
</input> 
<label class="cccsfont"> to </label> 
<input type="date" class="smalldatepicker" id="datepickerTo" value="2016-09-10"> 
</input> 

這之前,設置「datepickerTo」到上週六(這是基於週四9/15今天的日期)和「datepickerFrom」到週日。

雖然這是手動添加;我想這樣做編程,jQuery的,是這樣的:

var lastSat = getLastSaturday(); // return in form "YYYY-MM-DD" 
var sundayBeforeLastSat = getSundayBeforeLast(lastSat); // " " 

$("#datepickerTo").val(lastSat); 
$("#datepickerFrom").val(sundayBeforeLastSat); 

我認爲這應該工作,但我不知道要放什麼功能:

function getLastSaturday() { 
    return ???; 
} 

function sundayBeforeLastSat(lastSat) { 
    return ???; 
} 
+4

使用了'Date'對象的方法。 jQuery沒有這方面的任何內容,但是moment.js可能會有用。 – Barmar

回答

2

如果你不想使用像moment.js任何圖書館或其他

試試這個:

$(function(){ 
 

 
\t 
 
var lastSat = getLastSaturday(); // return in form "YYYY-MM-DD" 
 
var sundayBeforeLastSat = getSundayBeforeLastSat(lastSat); // " " 
 
console.log("Last satuarday: "+lastSat); 
 
    console.log("Last Sunday: "+sundayBeforeLastSat); 
 

 
$("#datepickerTo").val(lastSat); 
 
$("#datepickerFrom").val(sundayBeforeLastSat); 
 
}); 
 

 
function getLastSaturday() { 
 
    newDate= new Date(); 
 
\t daysAfterSat = newDate.getDay()+1; 
 
\t lastSat = new Date(newDate.setDate(newDate.getDate()-daysAfterSat)); 
 
\t dateString = lastSat.getFullYear()+ "-"+('0' + (lastSat.getMonth()+1)).slice(-2) + '-'+('0' + lastSat.getDate()).slice(-2); 
 
       
 
\t return dateString; 
 
} 
 

 
function getSundayBeforeLastSat(lastSat) { 
 
    date = new Date(lastSat); 
 
\t lastSun = new Date(date.setDate(date.getDate()-6)); 
 
\t dateString = lastSun.getFullYear()+ "-"+('0' + (lastSun.getMonth()+1)).slice(-2) + '-'+('0' + lastSun.getDate()).slice(-2); 
 
\t return dateString; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
<input class="smalldatepicker" type="date" id="datepickerFrom" value=""> 
 
</input> 
 
<label class="cccsfont"> to </label> 
 
<input type="date" class="smalldatepicker" id="datepickerTo" value=""> 
 
</input> 
 
</form>

+0

將「-6」更改爲「-5」,它非常完美。 –

+0

@ B.ClayShannon爲什麼「-5」不是「-6」能否解釋更多?我們需要在給定的星期六之前計算上個星期天。所以我認爲我們需要過去6天,而不是過去5天。 –

+0

我不知道爲什麼不,但那是有效的。 -6在9-3(週日)到9-10(週六)的時候將比分從9比3改寫爲9-10。 –

1

這裏是一個Date在ES6中操縱。

jQuery可能有一些模塊可以做到嗎?

否則moment.js是一個很好的庫,可以幫你嗎?

function pad(num) { 
 
    return `0${num}`.slice(-2); 
 
} 
 

 
// d is a Date object,returns 'YYYY-MM-DD' 
 
function format(d) { 
 
    return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`; 
 
} 
 

 
function day(d, dow) { 
 
    d.setTime(d.getTime() + (dow - d.getDay()) * 86400000); 
 
    return d; 
 
} 
 

 
// dateString is of form 'YYYY-MM-DD' 
 
function parse(dateString) { 
 
    const args = dateString.split('-'); 
 
    args[1] -= 1; 
 
    return args; 
 
} 
 

 
function getLastSaturday(...dateArgs) { 
 
    return format(day(new Date(...dateArgs), -1)); 
 
} 
 

 
function getSundayBeforeLast(lastSat) { 
 
    return format(day(new Date(...parse(lastSat)), 0)); 
 
} 
 

 
const lastSat = getLastSaturday(); 
 
const sundayBeforeLastSat = getSundayBeforeLast(lastSat); 
 

 
$('#datepickerTo').val(lastSat); 
 
$('#datepickerFrom').val(sundayBeforeLastSat);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="smalldatepicker" type="date" id="datepickerFrom"> 
 
<label class="cccsfont">to</label> 
 
<input type="date" class="smalldatepicker" id="datepickerTo">

而且使用moment.js

function getLastSaturday(...dateArgs) { 
 
    return moment(dateArgs).day(-1).format('YYYY-MM-DD'); 
 
} 
 

 
function getSundayBeforeLast(lastSat) { 
 
    return moment(lastSat).day(0).format('YYYY-MM-DD'); 
 
} 
 

 
const lastSat = getLastSaturday(); 
 
const sundayBeforeLastSat = getSundayBeforeLast(lastSat); 
 

 
$('#datepickerTo').val(lastSat); 
 
$('#datepickerFrom').val(sundayBeforeLastSat);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.js"></script> 
 
<input class="smalldatepicker" type="date" id="datepickerFrom"> 
 
<label class="cccsfont">to</label> 
 
<input type="date" class="smalldatepicker" id="datepickerTo">

+1

關注評論爲什麼倒票?如果我不知道問題是什麼,我無法解決答案。 – Xotic750

+0

我覺得有些貓只是因爲純粹的行爲而退縮;一定很難過,如此微不足道。 –

+0

也許吧。也許這是因爲這個例子只是一個通用的工具來指導你,並不是你作爲一個複製和粘貼所需的確切代碼。 :/ – Xotic750

相關問題