Какая первая/последняя неделя месяца?

Если кто-то сказал, что что-то происходит в первую или последнюю неделю месяца, как бы вы определили этот диапазон?


Фон

Я работаю над библиотекой, которая должна обрабатывать такие вещи интуитивным способом, но моя интуиция не претендует ни на один случай, ни на другой.

Я могу заставить его выбрать другое поведение, но по-прежнему нужно хорошее значение по умолчанию.


Для конкретного примера я просто хочу выбрать случайный месяц: июль 2008 г.

s  m  t  w  r  f  s
--------------------
      1  2  3  4  5
6  7  8  9  10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

(Примечание. Предполагаю, что неделя начинается с воскресенья, но вопрос может быть задан и в понедельник)

Какой диапазон занимает первую неделю месяца?

  • 29 июня - 5 июля - неделя, которая включает первый
  • 6 - 12 июля - первая неделя, которая проходит весь месяц.

Вторая неделя - это всего лишь 7 дней после первого правильного?

Какой промежуток занимает последняя неделя месяца?

  • 27 июля - 2 августа - то же самое, но в последний день
  • 20 - 26 июля - то же, но на прошлой неделе

Не комментарии wiki приветствуются

Ответы

Ответ 1

Нет ответа, потому что он меняется даже внутри страны.

Однако этот источник, кажется, считает, что он определен стандартом ISO как первая неделя, которая содержит четверг. Однако вышеупомянутый источник говорит, что стандарт ISO не перечисляет спецификацию для "первой недели месяца"


Более 300 символов - извините!

Стандарт ISO 8601 определяет первую неделю YEAR как:

номер календаря

порядковый номер, который идентифицирует календарную неделю в течение своего календарного года в соответствии с правилом, согласно которому первое календарная неделя года - та, которая включает первый четверг этого года и последний календарь неделя календарного года - это неделя, которая предшествует первой календарной неделе следующего календарного года.

В ИСО 8601 ничего не говорится о первой неделе месяца, поскольку, как было отмечено, определение зависит от страны (и даже от компании, например). О, и стандарт говорит, что недели начинаются в понедельник.

Ответ 2

Если вы создаете библиотеку, вы должны разрешить пользователю выбирать, как они хотят ее обрабатывать, либо с помощью методов, которые возвращают первую/последнюю полную/неполную неделю месяца, либо путем передачи аргумента, который указывает, хотите ли вы полная/неполная неделя. Четко документируйте то, что является значением по умолчанию, если вы предоставляете методы, которые не требуют спецификации.

public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }

public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }

или

public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}

Ответ 3

Первая неделя месяца - это первая неделя, которая полностью соответствует месяцу

  1. 6 - 12 июля

Ответ 4

Первая неделя месяца - это неделя, которая включает первый

  • 29 июня - 5 июля

Ответ 5

Последняя неделя месяца - это неделя, которая включает последний день

  • 27 июля - 2 августа

Ответ 6

Последняя неделя месяца - последняя неделя, которая полностью соответствует месяцу

  1. 20 - 26 июля

Ответ 7

Мое определение будет первой неделей недели первого рабочего дня месяца, а также последняя неделя - неделя последнего рабочего дня месяца.

Ответ 8

Первая неделя месяца - неделя 0 - неделя, которая имеет первый день месяца. Последняя неделя - неделя с последним днем ​​месяца.

Следовательно, weeknumber последней недели июля ЯВЛЯЕТСЯ ТОЛЬКО ИДЕНТИННЫМ номером первой недели августа

** УБЕДИТЕСЬ **

месяц, о котором идет речь, заканчивается в последний день прошлой недели, в том случае, когда следующий месяц начнется в первый день новой недели и будет иметь другой номер недели

:)

Ответ 9

Первая неделя месяца - это первая неделя, которой принадлежит 4 или более дней определенного периода недели. (Не совсем, но я думал, что брошу его как вариант)

Ответ 10

Там довольно очевидный вариант, который вам не хватает. Первая неделя месяца - это семь дней, начинающихся с первого дня месяца. Следовательно, в вашем примере первая неделя будет во вторник, с 1 по понедельник, 7-го. Таким образом, с первого по 4-й недели всегда будет полностью содержаться в течение месяца, и только пятая неделя перейдет.

Ответ 11

Поговорите со своими пользователями и спросите их, что они думают, что означает, когда программа говорит им "Первая неделя месяца" и "Последняя неделя месяца".