我使用datepicker.iso8601Week()來計算選定日期(在jQuery UI日期選擇器中)的星期。datepicker.iso8601Week抵消
根據iso8601Week,一週從週二到週一,我需要它從週一到週日。這如何實現?
我使用datepicker.iso8601Week()來計算選定日期(在jQuery UI日期選擇器中)的星期。datepicker.iso8601Week抵消
根據iso8601Week,一週從週二到週一,我需要它從週一到週日。這如何實現?
希望這可以幫助你。
對不起,我沒有足夠的時間做詳細的單元測試。
function getDateRangeOfWeek(week){
var date = new Date();
var currentWeek = $.datepicker.iso8601Week(date);
date.setDate(date.getDate() - date.getDay() + 1 + (7 * (week - currentWeek)));
var result = [];
for(var i = 0;i < 7;i++){
var d = new Date();
d.setDate(date.getDate() + i)
result[i] = d;
}
return result;
};
開始對週一
$('#date').DatePicker({
starts: 1
});
開始對週日
$('#date').DatePicker({
starts: 0
});
按照JQuery UI Datepicker文檔星期開始在星期一的iso8601Week
功能,這是唯一明智的事情,如果它應該遵循ISO 8601 standard。如果你得到不同的行爲,我會認爲它是一個錯誤。你可以看看執行here。
獲取與Drupal日曆的日期匹配工作我發現每週過濾工作不正確,因爲datepicker.iso8601Week函數返回無效值。那麼,儘管所有的事實都像官方文檔那樣,我的週一週三開始了,那就是問題所在。我完成了下面的技巧:在點擊
var date = $.datepicker.iso8601Week(new Date(dateText));
var dateDay = $.datepicker.formatDate('D', new Date(dateText));
if (dateDay == 'Mon' || dateDay == 'Sun') {
date = date+1;
}
這段代碼返回週一和Sun正確的週數(以及所有其他天)。如果您使用datepicker作爲內聯過濾器界面,您可能還想保留點擊日期並從點擊位置開始顯示日曆。我這樣做是通過與月份名稱的確切長度的網址結尾:
var setMon = window.location.pathname.slice(20);
var setDay = window.location.pathname.slice(17,19);
var setYear = window.location.pathname.slice(8,12);
$('.datep').datepicker({
defaultDate: $.datepicker.parseDate("dd MM y", setDay+" "+setMon+" "+setYear)
});
希望能幫助別人,我就搞清楚如何解決這個星期數花了該死的很多時間。乾杯。
根據ISO 8601,您在哪裏看過星期二開始的星期二?我不認爲是這樣。 – Jonas 2009-05-20 16:14:14
根據ISO 8601,他們從星期一開始,但在我的實施中,他們以某種方式在星期二開始。我不確定爲什麼。 – 2009-05-28 14:05:42