powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Количество недель в месяце
39 сообщений из 39, показаны все 2 страниц
Количество недель в месяце
    #37730076
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не подскажите как посчитать количество недель в конкретном месяце конкретного года
Спасибо
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730196
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала абсолютно точно сформулируйте, что такое "количество недель" в данном случае, и что такое "неделя" опять же в данном случае...
А то, например, если надо полные недели без учёта дня недели - то всегда ровно четыре.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730207
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorНе подскажите как посчитать количество недель в конкретном месяце конкретного года
Спасибо
Возьми timestamp начала первого числа одного месяца и timestamp начала первого числа следующего месяца. Разница - количество секунд в интересующем тебя месяце. Делай с ними что хочешь. А что такое "кол-во недель" понятно только тебе и определяется задачей, которую ты решил не озвучивать, видимо, подразумевая, что твоя задача не только в твоей голове, а и в наши астрально передается в момент создания темы на форуме =)
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730219
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему поспешил с вопросом
Стал разбираться, смотрю на график проги сделанной не мной и не врубаюсь почему в ноябре, феврале, мае и августе стоит по пять недель в остальных четыре.
Так то вот сварганил, считает полные недели
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     int days = (datePicker1.SelectedDate.Value.Day-DateTime.DaysInMonth(datePicker1.SelectedDate.Value.Year, datePicker1.SelectedDate.Value.Month));
            int wholeWeeks = days / 7;
            int remainder = days % 7;
            
            string result = days + (Math.Abs(days) == 1 ? " day" : " days");
            
            if (Math.Abs(days) > 13)
                result += wholeWeeks.ToString();
            else
                result += wholeWeeks.ToString();


Теперь до завтра узнаю, что там да как в графике учебного процесса.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730224
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorТак то вот сварганил, считает полные недели

Полных недель ВСЕГДА ЧЕТЫРЕ! )))))))
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730253
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonChek_FedorТак то вот сварганил, считает полные недели

Полных недель ВСЕГДА ЧЕТЫРЕ! )))))))
Ну да не так выразился, да и код этот считает кол-во недель от выбранной даты.
А мне, как оказалось, нужно посчитать общее кол-во недель и их даты. Так например в марте 5 недель
что то типа такого
Код: sql
1.
2.
3.
4.
5.
1. 1-4
2. 5-11
3. 12-18
4. 19-25
5. 26-31
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730263
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полных недель ВСЕГДА ЧЕТЫРЕ! )))))))

В последнем феврале иногда три )
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730266
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, теперь понятно. В такой задаче и 6 недель может получиться. Если например, 1 день попадает в одну неделю, 28 - следующие 4 недели и еще 1 - 6-ая неделя.

В целом алгоритм следующий:
- берем номер первого дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- берем номер последнего дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- брем их разницу + 1.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730268
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПолных недель ВСЕГДА ЧЕТЫРЕ! )))))))

В последнем феврале иногда три )
Тьху, полных действительно 3 может получиться....
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730271
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ну это если неделями считать не произвольных 7 дней, а именно как в уточненной задаче требуется. А имелось ввиду, что без уточнения в любом месяце 4 недели с хвостиком. С уточнением, понятно, от 3 до 6.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730276
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonВо, теперь понятно. В такой задаче и 6 недель может получиться. Если например, 1 день попадает в одну неделю, 28 - следующие 4 недели и еще 1 - 6-ая неделя.

В целом алгоритм следующий:
- берем номер первого дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- берем номер последнего дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- брем их разницу + 1.
Спасибо завтра попробую.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37730348
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПолных недель ВСЕГДА ЧЕТЫРЕ! )))))))

В последнем феврале иногда три )
Полных - всегда четыре.
А вот полных, начинающихся с понедельника (или другого дня недели) - да, может быть и три.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37731134
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaAleksandr SharahovПолных недель ВСЕГДА ЧЕТЫРЕ! )))))))

В последнем феврале иногда три )
Полных - всегда четыре.
А вот полных, начинающихся с понедельника (или другого дня недели) - да, может быть и три.

Т.е. когда один программист спрашивает другого,
сколько полных недель в конкретном месяце,
отвечающий должен предположить,
что имеет дело с идиотом,
и ответить "4"?
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37731821
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovТ.е. когда один программист спрашивает другого, сколько полных недель в конкретном месяце, отвечающий должен предположить, что имеет дело с идиотом, и ответить "4"?
Отвечать на вопрос, услышав только треть вопроса? В этом случае спросивший будет точно знать, что имеет дело с идиотом.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732157
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaAleksandr SharahovТ.е. когда один программист спрашивает другого, сколько полных недель в конкретном месяце, отвечающий должен предположить, что имеет дело с идиотом, и ответить "4"?
Отвечать на вопрос, услышав только треть вопроса? В этом случае спросивший будет точно знать, что имеет дело с идиотом.

Конечно, ведь иначе не ясно, о какой планете идет речь.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732185
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovТ.е. когда один программист спрашивает другого,
сколько полных недель в конкретном месяце,
отвечающий должен предположить,
что имеет дело с идиотом,
и ответить "4"?
Отвечающий может много чего предполагать. Толк от разговора настанет только после уточнений. Независимо от первичного предположения. При чем, отвечающий вовсе не обязан что-либо предполагать, чтобы ответить 4.

Вас когда время спрашивают, вы тоже таких людей за идиотов принимаете? Все может найтись причина, отличная от "идиот".
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732186
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Все
Всегда
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732220
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

Тут все за уточнения. Но за разные стили ответа.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732375
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonВо, теперь понятно. В такой задаче и 6 недель может получиться. Если например, 1 день попадает в одну неделю, 28 - следующие 4 недели и еще 1 - 6-ая неделя.

В целом алгоритм следующий:
- берем номер первого дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- берем номер последнего дня месяца относительно начала года и вычисляем в какую неделю года он попадает.
- брем их разницу + 1.
Как определить в какую неделю года попадает число месяца
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732389
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorКак определить в какую неделю года попадает число месяца
Посмотреть средства языка по части форматирования даты... бывает, там есть формат номера недели...
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732402
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorКак определить в какую неделю года попадает число месяца
Зависит от того, какими средствами по работе с датой располагаете.
Если нет функции типа "какой это день в году" или "какая это неделя в году", тогда берем timestamp начала первого января и timestamp начала нужного дня. Обычно это в секундах. В неделе 7 * 24 * 60 * 60 секунд. Делим разницу на это число - получаем что-то типа 35.44. Для другого дня получаем 38.01. 38 - 35 + 1 = 4. Т.е. месяц лежит в 35, 36, 37, 38 неделях (первая неделя в году при этом будет иметь номер 0).
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732426
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorКак определить в какую неделю года попадает число месяца

Сквозной номер недели, в который попадает дата, можно вычислить так

Код: pascal
1.
2.
3.
4.
  Day: TDateTime;
  WeekNo: integer;
...
  WeekNo:=(Trunc(Day)+5) div 7;



а, зная его для первого дня в году и текущего дня, легко вычислить разницу.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37732433
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaChek_FedorКак определить в какую неделю года попадает число месяца
Посмотреть средства языка по части форматирования даты... бывает, там есть формат номера недели...
Язык C#
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37738693
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как сформировать такое "чудо" пробую все это отобразить в ListBox
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739279
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

Код: pascal
1.
2.
3.
4.
5.
  Day: TDateTime;
  WeekNo, DayNo: integer;
...
  WeekNo:=(Trunc(Day)+5) div 7;
  DayNo:=(Trunc(Day)+5) mod 7;



Здесь 0=пн, 1=вт, ... 6=вс
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739323
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпробую все это отобразить в ListBox
По-моему не лучший выбор. Хотя, конечно, тут от фантазии зависит. От ручного рисования до накидывания кнопок (число = кнопка).
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739324
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и от того, что дальше со всем этим делать
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739353
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TForm1.Button2Click(Sender: TObject);
var
  today: TDateTime;
  year, month, day: word;
  dow, max, line, no: integer;
  sl: TStringList;
  s: string;
begin;
  today:=Date();
  DecodeDate(today, year, month, day);
  dow:=(Trunc(today-day+1)+5) mod 7;
  max:=DaysInAMonth(year, month);

  ListBox1.Items.Clear;
  for line:=0 to 6 do begin;
    no:=line+1-dow;
    s:='';
    repeat;
      if no<=0 then s:=s+'     ' else s:=s+Format('%.2d ',[no]);
      inc(no,7);
      until no>max;
    ListBox1.Items.Add(s);
    end;
  end;
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739359
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonНу и от того, что дальше со всем этим делать
Так в том то и дело что ни чего. Просто нужно загнать календарь вида (как на рисунке) в наименование столбца, для наглядности (и чтобы пользователь меньше вопросов задавал) вот и думаю как лучше сделать. Смог загнать стандартный "календарь" Silverlight'а в наименование столбца, но это меня не устраивает т.к. нумерация идет с лева на право, а мне нужно как на рисунке. В общем я в растерянности, не могу определится со своими дальнейшими действами, что, куда, и как. Жду советов. Спасибо
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37739366
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

выкини строчку
Код: pascal
1.
  sl: TStringList;


пожалуйста
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37740148
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TForm1.Button2Click(Sender: TObject);
var
  today: TDateTime;
  year, month, day: word;
  dow, max, line, no: integer;
  sl: TStringList;
  s: string;
begin;
  today:=Date();
  DecodeDate(today, year, month, day);
  dow:=(Trunc(today-day+1)+5) mod 7;
  max:=DaysInAMonth(year, month);

  ListBox1.Items.Clear;
  for line:=0 to 6 do begin;
    no:=line+1-dow;
    s:='';
    repeat;
      if no<=0 then s:=s+'     ' else s:=s+Format('%.2d ',[no]);
      inc(no,7);
      until no>max;
    ListBox1.Items.Add(s);
    end;
  end;


Подскажите пожалуйста как получить календарь на заданный месяц и год. Данная прога строит календарь на текущий месяц.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37740190
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПодскажите пожалуйста как получить календарь на заданный месяц и год.
Данная прога строит календарь на текущий месяц.

Присвоить переменной today нужную дату.
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37740221
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovChek_FedorПодскажите пожалуйста как получить календарь на заданный месяц и год.
Данная прога строит календарь на текущий месяц.

Присвоить переменной today нужную дату.
Да в Delphi то я понял куда затолкать нужную дату, а вот с переводом на C# испытываю трудности

Код: sql
1.
2.
3.
4.
today:=Date(); // нужная дата
  DecodeDate(today, year, month, day);// ????? 
  dow:=(Trunc(today-day+1)+5) mod 7;// ?????
  max:=DaysInAMonth(year, month);// Максимальное кол-во дней в месяце


что такое dow?
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37740236
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedorчто такое dow?


dow - Day Of Week - день недели первого дня месяца
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37740272
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо все получилось
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37750243
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

когда то давно сделал это чудо на Excel ) календарь формировался сам на экране, найду закину
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37750525
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа программисты не подскажите как это чудо выронить (чтобы читабельным стало) может в грид засунуть?
Код: sql
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.
32.
33.
34.
35.
36.
private void button1_Click(object sender, RoutedEventArgs e)
        {
          //  ArrayList data = new ArrayList();
            for (line = 0; line <= 6; line++)
            {
                s_day = "";
                for (month_int = 2; month_int <= 12; month_int++)
                {
                    dow = (int)(new DateTime(2012, month_int, 1, 0, 0, 0)).DayOfWeek;
                    max = System.DateTime.DaysInMonth(2012, month_int);                 //Максимальное количество дней в текущем месяце
                    w = (int)(new DateTime(2012, month_int, 1, 0, 0, 0)).Month;
                    no = line + 1 - dow;
                    s = "";
                    do
                    {
                        if ((no + 7) >= max)
                        {
                            if (no <= 0) { s = s + "| "; }
                            else { s = s + "  " + no.ToString("00", CultureInfo.InvariantCulture); }
                        }
                        else
                        {
                            if (no <= 0) { s = s + "| "; }
                            else { s = s + "  " + no.ToString("00", CultureInfo.InvariantCulture); };
                        }
                        no = no + 7;
                    } while (no <= max);
                    s_day = s_day + s;
                 }

                listBox1.Items.Add(s_day);
               // data.Add(s_day);
            //    dataGrid1.ItemsSource=data;
            }
         //   return data;
        }
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37750637
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, вопрос снят
...
Рейтинг: 0 / 0
Количество недель в месяце
    #37751350
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

спасибо, не надо, я умею
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Количество недель в месяце
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]