Странный календарь

Странный календарь
Atom
3/15/2013
VassilSanych


Поинтересовался, как учитываются выходные дни
Code
		/// <summary>
		/// Заполнить <see cref="WorkingTime.SpecialHolidays"/> праздниками по-умолчанию.
		/// </summary>
		/// <param name="board">Площадка.</param>
		/// <param name="startYear">Начальный год.</param>
		/// <param name="endYear">Конечный год.</param>
		public static void ApplyDefaultHolidays(this ExchangeBoard board, DateTime startYear, DateTime endYear)
		{
			if (board == null)
				throw new ArgumentNullException("board");

			if (startYear >= endYear)
				throw new ArgumentOutOfRangeException("endYear");

			var holidays = new List<DateTime>();

			for (var year = startYear.Year; year <= endYear.Year; year++)
			{
				for (var i = 1; i <= 10; i++)
					holidays.Add(new DateTime(year, 1, i));

				holidays.Add(new DateTime(year, 2, 23));
				holidays.Add(new DateTime(year, 3, 8));
				holidays.Add(new DateTime(year, 5, 1));
				holidays.Add(new DateTime(year, 5, 2));
				holidays.Add(new DateTime(year, 5, 9));
				holidays.Add(new DateTime(year, 6, 13));
				holidays.Add(new DateTime(year, 11, 4));
			}

			board.WorkingTime.SpecialHolidays = holidays.ToArray();
		}

Нда...
Мало того, что календарь как-то странно простой. Без переносов рабочих дней. Не знаю, может календарь ММВБ действительно такой особенный.
Но почему праздник 13 июня вместо 12-го?

Tags:


Thanks:


VassilSanych

Avatar
Date: 3/15/2013
Reply


Собственно
Ещё имеем:
- лишние январские выходные,
- лишний выходной 2 мая.
Thanks:

ra81

Avatar
Date: 3/15/2013
Reply


Пришить все странные дни туда можно вроде как ручками.
Thanks:

VassilSanych

Avatar
Date: 3/15/2013
Reply


ra81
Пришить все странные дни туда можно вроде как ручками.

Это да. Конечно.
Просто указанный метод, получается, - ошибочный в принципе. Так что, наверное, лучше, чтоб его вообще не было.

Thanks:

VassilSanych

Avatar
Date: 3/15/2013
Reply


Накидал по-быстрому
Code
	public static class ExchangeBoardHelper
	{
		public static void ApplyHolidays2013(this ExchangeBoard board)
		{
			if (board == null)
				throw new ArgumentNullException("board");

			var holidays = new List<DateTime>();
			const int year = 2013;

			//https://rts.micex.ru/s690
			for (var i = 1; i <= 7; i++)
				holidays.Add(new DateTime(year, 1, i));

			holidays.Add(new DateTime(year, 3, 8));
			holidays.Add(new DateTime(year, 5, 1));
			holidays.Add(new DateTime(year, 5, 9));
			holidays.Add(new DateTime(year, 6, 12));
			holidays.Add(new DateTime(year, 11, 4));

			board.WorkingTime.SpecialHolidays = holidays.ToArray();
		}

		public static void ApplyHolidays2012(this ExchangeBoard board)
		{
			if (board == null)
				throw new ArgumentNullException("board");

			const int year = 2012;

			//https://rts.micex.ru/a254
			var holidays = new[,] {{1,2}, {2,23}, {3,8}, {3,9}, {4,30}, {5, 1}, {5, 9}, {6, 11}, {6, 12}, {11, 5}, {12, 31} };
			var holidayDates = new List<DateTime>();
			for (var i = 0; i < holidays.GetLength(0); i++)
				holidayDates.Add(new DateTime(year, holidays[i, 0], holidays[i, 1]));
			board.WorkingTime.SpecialHolidays = holidayDates.ToArray();

			var workingDays = new[,] { { 3, 11 }, { 4, 28 }, { 5, 5 }, { 5, 12 }, { 6, 9 } };
			var workingDates = new List<DateTime>();
			for (var i = 0; i < workingDays.GetLength(0); i++)
				workingDates.Add(new DateTime(year, workingDays[i, 0], workingDays[i, 1]));
			board.WorkingTime.SpecialWorkingDays = workingDates.ToArray();
		}
	}
Thanks: Mikhail Sukhov vk37 UsilaDobry


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy