Microsoft week numbering
Сегодня Понедельник, 23 мая 2011 года. Какой сегодня номер недели?
Excel 2007:
Calc 3:
Google Calendar:
c#:
Что делать?
MS считает, что сегодня 22 неделя, все остальные - что 21. Нумерация недель важный аспкет в бизнес процессах. Что то тут не так.
Спустя некоторое время вскрытие показало:
Все таки не зря я обратил внимание на эту проблему. Есть три правильных подхода к определению первой недели, но лишь один из них самый правильный:
1. ISO-8601 говорит, что первая неделя та, у которой есть первый четверг года. Так принято в Европе.
2. USA говорит, что первая неделя та, в которой 1 января.
3. Кто то говорит, что первая неделя та, которая первая полностью попала в новый год.
MS подчинился второму правилу, хотя в мире общепринято первое.. Очевидно это баг (а может быть. И если это реально баг, то ему уже 7 лет и он успешно портирован в Vista и в Seven) Дело в том, что в независимости от выбранной локали, используется американская система нумерации.
У MS есть еще и второй баг, комплексный. Есть такой вот ключ HKEY_CURRENT_USER\Control Panel\International\iFirstWeekOfYear. Первая бага заключается в том, что в региональных настройках отсутсвует выбор типа нумерации недель. Хотя очевидно, что такая настройка там быть обязана. Вторая бага заключается в том, что ключ то не работает совсем, меняй-не-меняй..
Т.е. для адекватного подсчета недель в своих приложениях нужно взять спецификации и все аккуратно реализовать. The end.
Excel 2007:
Calc 3:
Google Calendar:
c#:
Что делать?
MS считает, что сегодня 22 неделя, все остальные - что 21. Нумерация недель важный аспкет в бизнес процессах. Что то тут не так.
Спустя некоторое время вскрытие показало:
Все таки не зря я обратил внимание на эту проблему. Есть три правильных подхода к определению первой недели, но лишь один из них самый правильный:
1. ISO-8601 говорит, что первая неделя та, у которой есть первый четверг года. Так принято в Европе.
2. USA говорит, что первая неделя та, в которой 1 января.
3. Кто то говорит, что первая неделя та, которая первая полностью попала в новый год.
MS подчинился второму правилу, хотя в мире общепринято первое.. Очевидно это баг (а может быть. И если это реально баг, то ему уже 7 лет и он успешно портирован в Vista и в Seven) Дело в том, что в независимости от выбранной локали, используется американская система нумерации.
У MS есть еще и второй баг, комплексный. Есть такой вот ключ HKEY_CURRENT_USER\Control Panel\International\iFirstWeekOfYear. Первая бага заключается в том, что в региональных настройках отсутсвует выбор типа нумерации недель. Хотя очевидно, что такая настройка там быть обязана. Вторая бага заключается в том, что ключ то не работает совсем, меняй-не-меняй..
Т.е. для адекватного подсчета недель в своих приложениях нужно взять спецификации и все аккуратно реализовать. The end.



Определять мажоритарным способом ;) ну а если по стандартам - http://en.wikipedia.org/wiki/ISO_week_date
ВідповістиВидалити==
luafertome
MS это еще и Outlook, было бы глупо игнорировать такой голос...
ВідповістиВидалити