2014-12-30 3 views
0

Я попытался найти решение, которое дает правильный номер недели для значения даты.
link1, link2, link3
следуют методы в ссылки выше, но на дату 30/12/2014, я получаю номер недели, как 53. но он падает, как 1-я неделя 2015 года.
Я попробовал следующие методы, чтобы получить номер недели года для конкретной даты.Получить номер недели для данной даты C#

private int GetWeekNumberOfTheYear() { 
var currentCulture = CultureInfo.CurrentCulture; 
// option 1 
var weekNo = currentCulture.Calendar.GetWeekOfYear(DateTime.Now,currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); 
// option 2 
var weekNo = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday); 
return weekNo; } 

Правильно ли указан вышеописанный метод возврата 53 в качестве номера недели или он должен быть 1?
Есть ошибки в приведенном выше коде. Предложения, пожалуйста. EDIT:

Найдено много поисковых запросов указано, 29 декабря 2014 по 4 января 2015 года в 1-й недели 2015
год Так что моя путаница нынешняя неделя должна рассматриваться как 53-й недели или 1-й недели.

http://week-number.net/calendar-with-week-numbers-2014.html
http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php

+3

Почему 30 декабря * когда-либо * была первой неделей года? –

+0

Есть 52.1775 недель в году, так что, другими словами, один или два дня на 53-й неделе. Поэтому, конечно, правильно вернуть 53. Подумайте ... почему 30-й день декабря (имеет 31 день) будет на 1-й неделе 2015 года. – Adam

+1

@JeroenVannevel Я предполагаю, что его замешательство происходит с 30 декабря, на той же неделе, что и 1 января. –

ответ

5

Если вы ищете для ISO-8601 неделю-недельного года, вы можете использовать мой Noda Time проект:

var date = new LocalDate(2014, 12, 30); 
var week = date.WeekOfWeekYear; // 1 
var weekYear = date.WeekYear; // 2015 

Вы можете получить LocalDate от DateTime через LocalDateTime, но в идеале вы можете использовать время Noda как можно шире в своем проекте. (Так я бы надеюсь, что вы получите максимальную выгоду.)

Смежные вопросы