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


Поинтересовался, как учитываются выходные дни
Код
		/// <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-го?

Теги:


Спасибо:


VassilSanych

Фотография
Дата: 15.03.2013
Ответить


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

ra81

Фотография
Дата: 15.03.2013
Ответить


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

VassilSanych

Фотография
Дата: 15.03.2013
Ответить


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

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

Спасибо:

VassilSanych

Фотография
Дата: 15.03.2013
Ответить


Накидал по-быстрому
Код
	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();
		}
	}
Спасибо: Mikhail Sukhov vk37 UsilaDobry


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy