|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Как определить номер недели месяца, к которой относится текущая дата ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 11:54 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Чтобы вычислить, на какой день недели приходится некоторая дата, можно использовать следующий алгоритм (все деления целочисленные, остаток не учитывается; номер года - Year, месяца - Month, дня - Day) a= (14-Month)/12 y= Year - a m= Month + 12a - 2 d= (Day + y + y/4 - y/100 + y/400 + (31*m)/12) mod 7 Значения d - 0 для воскресенья, 1 для понедельника, и т.д. Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 12:23 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Мне нужный определить порядковый номер недели в месяце, в среднем в месяце 4-5 недель. Соответсвено исходя из даты нужно определить на какой неделе месяца эта дата ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 13:29 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
orientМне нужный определить порядковый номер недели в месяце, в среднем в месяце 4-5 недель. Соответсвено исходя из даты нужно определить на какой неделе месяца эта дата Если алгоритм приведённый Хнык'ом верен, то можно использовать его, что бы определить день недели для первого числа нужного месяца, а дальше недельки посчитать - дело техники. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 13:41 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Блин. Это стёб был. Формула такая существует, но пойти можно более лёгким путём. DateTime dt = new DateTime(10, 10, 10); int day = dt.Day Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 13:57 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
ХныкБлин. Это стёб был. Формула такая существует, но пойти можно более лёгким путём. DateTime dt = new DateTime(10, 10, 10); int day = dt.Day Он обычный сталевар. Он делает жесть. Всё равно как получаем день недели для первого числа месяца, а дальше в цикле от первого числа до искомого считаем недельки. Элементарно ! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:01 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
o_O Маразм. Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:05 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Всем спасибо int x=date.AddDays(1 - date.Day).DayOfWeek - date.DayOfWeek; x = (date.Day + x) / 7 + 1; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:14 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
хм, вопрос - а к какому месяцу относится неделя, которая началась в одном месяце, а закончилась в другом? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:19 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
orientВсем спасибо int x=date.AddDays(1 - date.Day).DayOfWeek - date.DayOfWeek; x = (date.Day + x) / 7 + 1; Эээ, ну если у вас неделя это 7 дней с Вс до Вс - то верно. а если с Пн до Пн - то нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:23 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Это неделя посредник. Она существует вне времени и простанства. В эту неделю случаются странные, а порою и страшные вещи. Предсказано, именно в одну из таких недель, Ктулху фтагн. PS Барыгу не сдам. PPS Раз всё равно офф, всех с наступающим. Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:23 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
winsky!хм, вопрос - а к какому месяцу относится неделя, которая началась в одном месяце, а закончилась в другом? К обоим. Это последняя неделя месяца Х и первая неделя месяца Х + 1. Логично? Но вот день всегда принадлежит какому то одному месяцу и находится соответственно либо в последней неделе месяца Х либо в первой недели месяца Х + 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:28 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
с днями - понятно :) а с неделями - вопрос имхо спорный ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:46 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
winsky!с днями - понятно :) а с неделями - вопрос имхо спорный Чё ж там спорить то ?! К какой недели декабря относится 3 декабря 2006 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:49 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
orientВсем спасибо int x=date.AddDays(1 - date.Day).DayOfWeek - date.DayOfWeek; x = (date.Day + x) / 7 + 1; Формула не верна. 31 декабря 2006 согласно ей находится в 6-ой недели декабря. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2006, 14:54 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
orientКак определить номер недели месяца, к которой относится текущая дата А не проще ли так: Код: plaintext 1. 2. 3. 4.
Это, правда, без учета того, что неделя строго с понедельника по воскресенье. Считается, что неделя начинается 1-го числа каждого месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2006, 11:26 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
gerss orientКак определить номер недели месяца, к которой относится текущая дата А не проще ли так: Код: plaintext 1. 2. 3. 4.
Это, правда, без учета того, что неделя строго с понедельника по воскресенье. Считается, что неделя начинается 1-го числа каждого месяца. Нет, не проще. Проще как я сказал - в цикле посчитать. Как заметил Хнык - маразм. Зато работает - 100%. А ваше решение работает только если 1 число месяца приходится на понедельник. Ну так что, где формула ? Хнык - решение плиз в студию! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2006, 18:01 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
А пока нет формулы, я напишу ещё одно решение. Не меньший марзам чем цикл, но тоже работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
------------------------------------------------------------------------- Скоро может начаться такая борьба за мир, что камня на камне не останется. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2006, 18:35 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3.
Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2006, 19:05 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Хнык Код: plaintext 1. 2. 3.
Он обычный сталевар. Он делает жесть. Сами то хоть проверяли ? Вообще ни в каком случае не работает. Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2006, 03:15 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
Статья из №11 журнала Алгоритм . По каким-то причинам компания Microsoft не добавила свойство Week к классу DateTime. Никогда не мог понять - почему. Вместо этого они вручили нам пространство имён System.Globalization, заполненное функциональностью для работы с датами с помощью разных классов календарей. В этом примере я использую класс GregorianCalendar для нахождения номера недели указанной даты. Код: plaintext 1. 2. 3. 4. 5. 6.
Как видите, это совсем не сложно, если вы знаете, где искать такой функционал. Подобным же образом можно узнать число недель в году. Для этого вам нужно знать последний день года, который никогда не будет принадлежать к первой неделе следующего года. Этим днём является 28 декабря. Вот способ, который даст вам число недель в указанном году. Код: plaintext 1. 2. 3. 4. 5. 6.
Теперь немного фокусов. Допустим, вам нужно узнать число недель между двумядатами. Можно передать в вышеприведенный метод дату и вычесть результат из результата, полученного с помощью другого метода: Код: plaintext
Но вы получите ошибку, если даты принадлежат разным годам. Для написания метода, принимающего в качестве параметров две даты и возвращающего число недель между ними, необходимо написать несколько дополнительных строк кода. Вот метод, который я использую для этих целей. Его просто использовать, но он достаточно сложен для такой непростой задачи. Тем более, я считаю, что такой метод должен быть у класса DateTime. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как вы видите из вышеприведенных примеров, работа с неделями на языке C# не так уж и очевидна. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2006, 09:27 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
hDrummerСтатья из №11 журнала Алгоритм . Как видите, это совсем не сложно, если вы знаете, где искать такой функционал. Как я вижу функция GetWeekOfMonth отсутствует начисто. Но всё равно спасибо за статью. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2006, 10:46 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
M234 Хнык Код: plaintext 1. 2. 3.
Он обычный сталевар. Он делает жесть. Сами то хоть проверяли ? Вообще ни в каком случае не работает. Увы. Попробуйте дату задать. Он обычный сталевар. Он делает жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2006, 10:47 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
M234 gerss orientКак определить номер недели месяца, к которой относится текущая дата А не проще ли так: Код: plaintext 1. 2. 3. 4.
Это, правда, без учета того, что неделя строго с понедельника по воскресенье. Считается, что неделя начинается 1-го числа каждого месяца. Нет, не проще. Проще как я сказал - в цикле посчитать. Как заметил Хнык - маразм. Зато работает - 100%. А ваше решение работает только если 1 число месяца приходится на понедельник. Ну так что, где формула ? Хнык - решение плиз в студию! Ну, я бы сказал, что неделя в месяце начинается 1-го числа и необязательно в понедельник. Тогда: 1-я неделя месяца - 1-7; 2-я - 8-14; 3-я - 15 - 21; 4-я - 22 - 28; 5-я - 29 - 31; (неполная, в феврале невисокосного года не будет совсем, в феврале високосного года - 1 день, при 30 днях в месяце - 2 дня, при 31 - 3) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2006, 11:35 |
|
Номер недели месяца
|
|||
---|---|---|---|
#18+
gerss Ну, я бы сказал, что неделя в месяце начинается 1-го числа и необязательно в понедельник. Тогда: 1-я неделя месяца - 1-7; 2-я - 8-14; 3-я - 15 - 21; 4-я - 22 - 28; 5-я - 29 - 31; (неполная, в феврале невисокосного года не будет совсем, в феврале високосного года - 1 день, при 30 днях в месяце - 2 дня, при 31 - 3) А я бы сказал, что это число какое-то количество семидневий в месяце и к календарным неделям отношение не имеющее. В Америке календарная неделя начинается и заканчивается в воскресенье, в Европе - в понедельник. В арабских странах - в субботу. Остальное - от лукавого. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2007, 11:38 |
|
|
start [/forum/topic.php?fid=20&msg=34227904&tid=1401758]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 464ms |
0 / 0 |