2009-05-20 72 views
2

我使用datepicker.iso8601Week()來計算選定日期(在jQuery UI日期選擇器中)的星期。datepicker.iso8601Week抵消

根據iso8601Week,一週從週二到週一,我需要它從週一到週日。這如何實現?

+0

根據ISO 8601,您在哪裏看過星期二開始的星期二?我不認爲是這樣。 – Jonas 2009-05-20 16:14:14

+0

根據ISO 8601,他們從星期一開始,但在我的實施中,他們以某種方式在星期二開始。我不確定爲什麼。 – 2009-05-28 14:05:42

回答

2

希望這可以幫助你。

對不起,我沒有足夠的時間做詳細的單元測試。

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; 
}; 
0

開始對週一

$('#date').DatePicker({ 
    starts: 1 
}); 

開始對週日

$('#date').DatePicker({ 
    starts: 0 
}); 
0

按照JQuery UI Datepicker文檔星期開始在星期一的iso8601Week功能,這是唯一明智的事情,如果它應該遵循ISO 8601 standard。如果你得到不同的行爲,我會認爲它是一個錯誤。你可以看看執行here

0

獲取與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) 
}); 

希望能幫助別人,我就搞清楚如何解決這個星期數花了該死的很多時間。乾杯。