/// <summary> /// получение временного диапазона /// для всех значений /// </summary> /// <returns>диапазон дат</returns> public override DateTimeRange[] GetDateTimeRangeValuesVar() { DateTimeRange[] arRangesRes = null; int i = -1; bool bEndMonthBoudary = false; DateTime dtBegin = _Session.m_rangeDatetime.Begin.AddDays(-_Session.m_rangeDatetime.Begin.Day).AddMinutes(-1 * _Session.m_curOffsetUTC) , dtEnd = _Session.m_rangeDatetime.End.AddMinutes(-1 * _Session.m_curOffsetUTC).AddDays(0); arRangesRes = new DateTimeRange[(dtEnd.Month - dtBegin.Month) + 12 * (dtEnd.Year - dtBegin.Year) + 1]; bEndMonthBoudary = HDateTime.IsMonthBoundary(dtEnd); if (bEndMonthBoudary == false) { if (arRangesRes.Length == 1) { // самый простой вариант - один элемент в массиве - одна таблица arRangesRes[0] = new DateTimeRange(dtBegin, dtEnd); } else { // два ИЛИ более элементов в массиве - две ИЛИ болле таблиц for (i = 0; i < arRangesRes.Length; i++) { if (i == 0) { // предыдущих значений нет //arRangesRes[i] = new DateTimeRange(dtBegin, HDateTime.ToNextMonthBoundary(dtBegin)); arRangesRes[i] = new DateTimeRange(dtBegin, dtBegin.AddDays(1)); } else if (i == arRangesRes.Length - 1) { // крайний элемент массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, dtEnd); } else { // для элементов в "середине" массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, new DateTime(arRangesRes[i - 1].End.Year, arRangesRes[i - 1].End.AddMonths(1).Month, DateTime.DaysInMonth(arRangesRes[i - 1].End.Year, arRangesRes[i - 1].End.AddMonths(1).Month))); } } } } //HDateTime.ToNextMonthBoundary(arRangesRes[i - 1].End)); else if (bEndMonthBoudary == true) { // два ИЛИ более элементов в массиве - две ИЛИ болле таблиц ('diffMonth' всегда > 0) // + использование следующей за 'dtEnd' таблицы for (i = 0; i < arRangesRes.Length; i++) { if (i == 0) { // предыдущих значений нет arRangesRes[i] = new DateTimeRange(dtBegin, HDateTime.ToNextMonthBoundary(dtBegin)); } else if (i == arRangesRes.Length - 1) { // крайний элемент массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, dtEnd); } else { // для элементов в "середине" массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, HDateTime.ToNextMonthBoundary(arRangesRes[i - 1].End)); } } } else { ; } return(arRangesRes); }
/// <summary> /// получение временного диапазона /// для блоков 1,6 /// </summary> /// <returns>диапазон дат</returns> public DateTimeRange[] GetDateTimeRangeValuesVarExtremeBL() { DateTimeRange[] arRangesRes = null; int i = -1; bool bEndMonthBoudary = false; DateTime dtBegin = _Session.m_rangeDatetime.Begin.AddHours(-(TimeZoneInfo.Local.BaseUtcOffset + TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time").BaseUtcOffset).Hours - 2), dtEnd = _Session.m_rangeDatetime.End.AddHours(-(TimeZoneInfo.Local.BaseUtcOffset + TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time").BaseUtcOffset).Hours - 2).AddDays(1); arRangesRes = new DateTimeRange[(dtEnd.Month - dtBegin.Month) + 12 * (dtEnd.Year - dtBegin.Year) + 1]; bEndMonthBoudary = HDateTime.IsMonthBoundary(dtEnd); if (bEndMonthBoudary == false) { if (arRangesRes.Length == 1) { // самый простой вариант - один элемент в массиве - одна таблица arRangesRes[0] = new DateTimeRange(dtBegin, dtEnd); } else { // два ИЛИ более элементов в массиве - две ИЛИ болле таблиц for (i = 0; i < arRangesRes.Length; i++) { if (i == 0) { // предыдущих значений нет //arRangesRes[i] = new DateTimeRange(dtBegin, HDateTime.ToNextMonthBoundary(dtBegin)); arRangesRes[i] = new DateTimeRange(dtBegin, dtBegin.AddDays(1)); } else if (i == arRangesRes.Length - 1) { // крайний элемент массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, dtEnd); } else { // для элементов в "середине" массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, new DateTime(arRangesRes[i - 1].End.Year, arRangesRes[i - 1].End.AddMonths(1).Month, DateTime.DaysInMonth(arRangesRes[i - 1].End.Year, arRangesRes[i - 1].End.AddMonths(1).Month))); } } } } //HDateTime.ToNextMonthBoundary(arRangesRes[i - 1].End)); else if (bEndMonthBoudary == true) { // два ИЛИ более элементов в массиве - две ИЛИ болле таблиц ('diffMonth' всегда > 0) // + использование следующей за 'dtEnd' таблицы for (i = 0; i < arRangesRes.Length; i++) { if (i == 0) { // предыдущих значений нет arRangesRes[i] = new DateTimeRange(dtBegin, HDateTime.ToNextMonthBoundary(dtBegin)); } else if (i == arRangesRes.Length - 1) { // крайний элемент массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, dtEnd); } else { // для элементов в "середине" массива arRangesRes[i] = new DateTimeRange(arRangesRes[i - 1].End, HDateTime.ToNextMonthBoundary(arRangesRes[i - 1].End)); } } } else { ; } return(arRangesRes); }