Я хотел бы иметь раскрывающийся список, заполненный за последние 20 недель (например,). Проблема в этом состоит в том, что, возможно, встречается еще один год. Функция, которую я написал (см. Ниже), действительно работает, если в предыдущем году не было выхода. Есть ли у кого-нибудь пример, который заполняет выпадающий список или массив за последние 20 недель, принимая во внимание культуру?Заполните ниспадающий указатель неделями за последние 20 недель
Private Sub LoadWeeknumbers()
Dim ciCurr As CultureInfo = CultureInfo.CurrentCulture
' fill the combobox with the last 10 weeks
ddlWeeknumber.Items.Clear()
'then the 52 voorbije weken
For i As Integer = 0 To 52
Dim week As String = ciCurr.Calendar.GetWeekOfYear(DateTime.Now.AddDays(i * -7), CalendarWeekRule.FirstDay, DayOfWeek.Monday)
Dim weeknr As String = week + "/" & DateTime.Now.AddDays(i * -7).Year.ToString()
weeknr = weeknr.Replace("54/", "1/") 'for some reason 54 is in this loop, so we replace it
ddlWeeknumber.Items.Add("Week: " & weeknr.ToString)
Next
End Sub
Этот код кажется слишком упрощенным для того, что запрашивает ОП. На самом деле проблема, с которой он жалуется, - это когда задействованы два года; ваш код учитывает единый счетчик недели, а не один год. Если я не понял, что ожидает OP ... – varocarbas
благодарит за ответ !. Это не работает. Проблема в первом дневном времени, в случае недели 1/2014, это ПОНЕДЕЛЬНИК 30 ДЕКАБРЯ, а номер недели - 53, что неверно. также изменение на firstfourdayweek не решает эту проблему, но я не уверен, почему. –
@real_yggdrasil, как объяснялось в моем ответе, это не ошибка; это результат определенных правил, которые вы должны понимать. Но вопрос в том, хотите ли вы один недельный счетчик в год или нет? – varocarbas