public string[] get_information(string[] list_befor_month, string[] list_curent_month, string[] list_after_month, int month, int year_number) { user_time UserTime = new user_time(); int day_number = 0; int count_week = 0; day_number = UserTime.number_day(1, month, year_number); int[] month_days = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //если текущий год високосный - устанавливаем в феврале 28 дней if (((year_number % 4 != 0) && (year_number % 100 == 0)) || ((year_number % 100 != 0) && (year_number % 400 != 0))) { month_days[1] = 28; } if ((month_days[month - 1] == 29 && (day_number == 6 || day_number == 7)) || (month_days[month - 1] == 28 && (day_number == 6 || day_number == 7 || day_number == 1)) || (day_number == 6 && month_days[month - 1] == 30)) { count_week = 4; } else { count_week = 5; } string[] finish_arr = new string[5 * count_week * 2]; if (day_number == 1) { int count_weeks_itr = 0; int i = day_number - 1; int ipoch = 5 - (month_days[month - 1] - 28); int j = 0; for (; j < finish_arr.Length / 2; j++) { if (i == month_days[month - 1]) { break; } finish_arr[j] = list_curent_month[i]; finish_arr[j + finish_arr.Length / 2] = list_curent_month[i + month_days[month - 1]]; i++; if (i % 7 == 5) { i += 2; count_weeks_itr++; } } if (count_weeks_itr != count_week) { for (int x = 0; x < ipoch; x++) { finish_arr[j] = list_after_month[x]; finish_arr[j + (finish_arr.Length / 2)] = list_after_month[x + month_days[month]]; j++; } } } if (day_number >= 2 && day_number <= 5) { int count_weeks_itr = 0; int count = day_number - 1; int f = 5 - count; int k = 0, i = 0; for (; k < count; k++) { if (month == 1) { month = 13; } finish_arr[k] = list_befor_month[month_days[month - 2] - count + k]; finish_arr[k + (finish_arr.Length / 2)] = list_befor_month[list_befor_month.Length - count + k]; } if (month == 13) { month = 12; } int ipoch = 5 - UserTime.number_day(month_days[month - 1], month, year_number); for (; k < finish_arr.Length / 2; k++) { finish_arr[k] = list_curent_month[i]; finish_arr[k + (finish_arr.Length / 2)] = list_curent_month[i + month_days[month - 1]]; if (i == month_days[month - 1] - 1) { k++; break; } i++; if (i % 7 == f) { i += 2; count_weeks_itr++; } } if (count_weeks_itr != count_week) { for (int x = 0; x < ipoch; x++) { finish_arr[k] = list_after_month[x]; if (month == 12) { month = 0; } finish_arr[k + (finish_arr.Length / 2)] = list_after_month[x + month_days[month]]; k++; } } } if (day_number == 6 || day_number == 7) { int count_weeks_itr = 0; int i = 1 + (7 - day_number); int z = 0; if (i == 2) { z = 0; } else { if (i == 1) { z = 6; } } int ipoch = 5 - UserTime.number_day(month_days[month - 1], month, year_number); int j = 0; for (; j < finish_arr.Length / 2; j++) { finish_arr[j] = list_curent_month[i]; finish_arr[j + (finish_arr.Length / 2)] = list_curent_month[i + month_days[month - 1]]; if (i == month_days[month - 1] - 1) { j++; break; } i++; if (i % 7 == z) { i += 2; count_weeks_itr++; } } if (count_weeks_itr != count_week) { for (int k = 0; k < ipoch; k++) { finish_arr[j] = list_after_month[k]; finish_arr[j + (finish_arr.Length / 2)] = list_after_month[k + month_days[month - 1]]; j++; } } } return(finish_arr); }