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.

Коментарі

  1. Определять мажоритарным способом ;) ну а если по стандартам - http://en.wikipedia.org/wiki/ISO_week_date
    ==
    luafertome

    ВідповістиВидалити
  2. MS это еще и Outlook, было бы глупо игнорировать такой голос...

    ВідповістиВидалити

Дописати коментар

Популярні публікації