/// <summary> /// This implementation was found on http://stackoverflow.com/questions/1285191/get-week-of-date-from-linq-query /// </summary> /// <param name="fromDate"></param> /// <returns></returns> private int WeekNumber(System.DateTime fromDate) { // Get jan 1st of the year var startOfYear = fromDate.AddDays(-fromDate.Day + 1).AddMonths(-fromDate.Month + 1); // Get dec 31st of the year var endOfYear = startOfYear.AddYears(1).AddDays(-1); // ISO 8601 weeks start with Monday // The first week of a year includes the first Thursday // DayOfWeek returns 0 for sunday up to 6 for saterday int[] iso8601Correction = { 6, 7, 8, 9, 10, 4, 5 }; int nds = fromDate.Subtract(startOfYear).Days + iso8601Correction[(int)startOfYear.DayOfWeek]; int wk = nds / 7; switch (wk) { case 0: // Return weeknumber of dec 31st of the previous year return WeekNumber(startOfYear.AddDays(-1)); case 53: // If dec 31st falls before thursday it is week 01 of next year if (endOfYear.DayOfWeek < DayOfWeek.Thursday) return 1; return wk; default: return wk; } }
public void Export_SPUN(System.DateTime FromDate, System.DateTime ToDate, string path, string prefix, int reeType, int processType, bool writePeriod, string sql, string note) { string str; System.IO.StreamWriter writer = null; try { System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(0x362); string str2 = string.Concat((string[]) new string[] { path, @"\", prefix, ((string) DALSql.ExecuteScalar("select isnull(sn.Setting_GetValue('GLOBAL','Код района из 1С'),'')", null)), "_", System.DateTime.Now.ToString("yyMMdd_HHmmss"), ".txt" }); System.IO.File.Delete(str2); writer = new System.IO.StreamWriter(str2, false, encoding); writer.WriteLine("#TYPEORG\tRKC"); writer.WriteLine("#KODORG\t\t" + ((string) ((string) DALSql.ExecuteScalar("select isnull(sn.Setting_GetValue('SID','Код организации'),'')", null)))); writer.WriteLine("#NAMEORG\t" + ((string) ((string) DALSql.ExecuteScalar("select isnull(sn.Setting_GetValue('SID','Наименование организации'),'')", null)))); writer.WriteLine("#TYPEREE\t" + ((int) reeType).ToString()); writer.WriteLine("#PROCESS\t" + ((int) processType).ToString()); writer.Write("#RECORDS\t"); writer.Flush(); long num = writer.BaseStream.get_Position(); writer.WriteLine(" "); if (writePeriod) { System.DateTime time = FromDate.AddDays((double) (-FromDate.get_Day() + 1)); writer.WriteLine("#PERIODB\t" + time.ToString(@"dd\/MM\/yyyy")); writer.WriteLine("#PERIODE\t" + time.AddMonths(1).AddDays((double) -1.0).ToString(@"dd\/MM\/yyyy")); } writer.WriteLine(string.Concat((string[]) new string[] { "#NOTE\t\t", note, " (", System.DateTime.Now.ToString("dd.MM.yyyy HH:mm"), ")" })); int num2 = 0; System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[2]; parameters[0] = new System.Data.SqlClient.SqlParameter("@d_beg", System.Data.SqlDbType.DateTime); parameters[0].set_Value(FromDate); parameters[1] = new System.Data.SqlClient.SqlParameter("@d_end", System.Data.SqlDbType.DateTime); parameters[1].set_Value(ToDate.AddDays((double) 1.0).AddSeconds((double) -1.0)); writer.WriteLine("#NOTE\t\tДата начала выборки: " + System.Convert.ToDateTime(parameters[0].get_Value()).ToString("dd.MM.yyyy HH:mm")); writer.WriteLine("#NOTE\t\tДата окончания выборки: " + System.Convert.ToDateTime(parameters[1].get_Value()).ToString("dd.MM.yyyy HH:mm")); foreach (System.Data.DataRow row in DALSql.ExecuteDataTable(sql, parameters).Rows) { writer.WriteLine(row.get_Item(0).ToString()); num2 = (int) (num2 + 1); } writer.Flush(); writer.BaseStream.Seek(num, System.IO.SeekOrigin.Begin); writer.Write(((int) num2).ToString("########0")); str = "Файл сформирован" + System.Environment.get_NewLine() + str2; } catch (System.Exception exception) { throw new System.ApplicationException("Произошла ошибка выгрузки", exception); } finally { if (writer != null) { writer.Close(); } } throw new System.ApplicationException(str); }
private System.DateTime AdjustResultWithHolidays(System.DateTime resultDate, IEnumerable<FunctionArgument> arguments) { if (arguments.Count() == 2) return resultDate; var holidays = arguments.ElementAt(2).Value as IEnumerable<FunctionArgument>; if (holidays != null) { foreach (var arg in holidays) { if (ConvertUtil.IsNumeric(arg.Value)) { var dateSerial = ConvertUtil.GetValueDouble(arg.Value); var holidayDate = System.DateTime.FromOADate(dateSerial); if (!IsHoliday(holidayDate)) { resultDate = resultDate.AddDays(1); } } } } else { var range = arguments.ElementAt(2).Value as ExcelDataProvider.IRangeInfo; if (range != null) { foreach (var cell in range) { if (ConvertUtil.IsNumeric(cell.Value)) { var dateSerial = ConvertUtil.GetValueDouble(cell.Value); var holidayDate = System.DateTime.FromOADate(dateSerial); if (!IsHoliday(holidayDate)) { resultDate = resultDate.AddDays(1); } } } } } return resultDate; }
public void Form1TasksUpdate( System.DateTime start, System.DateTime end) { this.taskDescriptionDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); int i = 0; while ((DateTime.Compare(start, end) != 0) && (i < 10)) { this.taskDescriptionDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.taskDescriptionDataGridViewTextBoxColumn2.DataPropertyName = start.ToString("dd.MM"); this.taskDescriptionDataGridViewTextBoxColumn2.HeaderText = start.ToString("dd.MM"); this.taskDescriptionDataGridViewTextBoxColumn2.Name = start.ToString("dd.MM"); this.taskDescriptionDataGridViewTextBoxColumn2.Width = 40; TaskDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.taskDescriptionDataGridViewTextBoxColumn2}); start = start.AddDays(1); i++; } }
public void Save_VTV(System.DateTime FromDate, System.DateTime ToDate, string DestinationDir) { string str; try { System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[2]; parameters[0] = new System.Data.SqlClient.SqlParameter("@d_beg", System.Data.SqlDbType.DateTime); parameters[0].set_Value(FromDate); parameters[1] = new System.Data.SqlClient.SqlParameter("@d_end", System.Data.SqlDbType.DateTime); parameters[1].set_Value(ToDate.AddDays((double) 1.0)); System.Data.DataSet set = DALSql.ExecuteDataSet("exec up_reload_varianttv_for_dbf @d_beg, @d_end", parameters); set.Tables.get_Item(0).set_TableName("PL" + FromDate.ToString("MMyyyy")); set.Tables.get_Item(0).Columns.get_Item("nlic").set_MaxLength(20); set.Tables.get_Item(0).Columns.get_Item("fio").set_MaxLength(50); set.Tables.get_Item(0).Columns.get_Item("n_pun").set_MaxLength(20); set.Tables.get_Item(0).Columns.get_Item("ul").set_MaxLength(20); set.Tables.get_Item(0).Columns.get_Item("dom").set_MaxLength(20); set.Tables.get_Item(0).Columns.get_Item("kv").set_MaxLength(20); DBF.WriteToFile((System.Data.DataTable) set.Tables.get_Item(0), DestinationDir, set.Tables.get_Item(0).get_TableName(), DbFileFormat.dBase3, false, false); string str2 = ((decimal) DBF.GetTableColumnSumm((System.Data.DataTable) set.Tables.get_Item(0), "summ")).ToString("F"); str = string.Concat((string[]) new string[] { "Выгрузка произведена в файлы ", set.Tables.get_Item(0).get_TableName(), ".DBF", System.Environment.get_NewLine(), "Общая сумма выгрузки составила ", str2 }); } catch (System.Exception exception) { throw new System.ApplicationException("Произошла ошибка выгрузки", exception); } throw new System.ApplicationException(str); }
public void SaveDBF_Electroseti(System.DateTime FromDate, System.DateTime ToDate, string DestinationDir) { string str; try { System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[2]; parameters[0] = new System.Data.SqlClient.SqlParameter("@d_beg", System.Data.SqlDbType.DateTime); parameters[0].set_Value(FromDate); parameters[1] = new System.Data.SqlClient.SqlParameter("@d_end", System.Data.SqlDbType.DateTime); parameters[1].set_Value(ToDate.AddDays((double) 1.0).AddSeconds((double) -1.0)); System.Data.DataSet set = DALSql.ExecuteDataSet("\r\n\t\t\t\t\tcreate table #t_in (nomer varchar(12), kod_r decimal(3,0), summa decimal(18,2),\r\n\t\t\t\t\tprimary key (nomer,kod_r))\r\n\t\t\t\t\texec up_reload_usl_el_ulenergo_for_dbf2 @d_beg, @d_end", parameters); set.Tables.get_Item(0).set_TableName("ES" + ToDate.ToString("ddMMyy")); set.Tables.get_Item(0).Columns.get_Item("nlic").set_MaxLength(6); set.Tables.get_Item(0).Columns.get_Item("nomer").set_MaxLength(13); set.Tables.get_Item(0).Columns.get_Item("pokaz").set_MaxLength(6); set.Tables.get_Item(0).Columns.get_Item("pr_dop").set_MaxLength(1); set.Tables.get_Item(0).Columns.get_Item("fio_r").set_MaxLength(50); set.Tables.get_Item(0).Columns.get_Item("adr_r").set_MaxLength(60); set.Tables.get_Item(0).Columns.get_Item("tname").set_MaxLength(50); set.Tables.get_Item(0).Columns.get_Item("point").set_MaxLength(50); set.Tables.get_Item(1).set_TableName("ED" + ToDate.ToString("ddMMyy")); set.Tables.get_Item(1).Columns.get_Item("nomer").set_MaxLength(13); set.Tables.get_Item(1).Columns.get_Item("fio_lg").set_MaxLength(60); DBF.WriteToFile((System.Data.DataTable) set.Tables.get_Item(0), DestinationDir, set.Tables.get_Item(0).get_TableName(), DbFileFormat.dBase3, false, false); DBF.WriteToFile((System.Data.DataTable) set.Tables.get_Item(1), DestinationDir, set.Tables.get_Item(1).get_TableName(), DbFileFormat.dBase3, false, false); string str2 = ((decimal) DBF.GetTableColumnSumm((System.Data.DataTable) set.Tables.get_Item(0), "summa")).ToString("F"); str = string.Concat((string[]) new string[] { "Выгрузка произведена в файлы ", set.Tables.get_Item(0).get_TableName(), ".DBF и ", set.Tables.get_Item(1).get_TableName(), ".DBF", System.Environment.get_NewLine(), "Общая сумма выгрузки составила ", str2 }); } catch (System.Exception exception) { throw new System.ApplicationException("Произошла ошибка выгрузки", exception); } throw new System.ApplicationException(str); }
public void SaveDBFNullOpl_Electroseti(System.DateTime FromDate, System.DateTime ToDate, string DestinationDir) { string str; try { System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[2]; parameters[0] = new System.Data.SqlClient.SqlParameter("@d_beg", System.Data.SqlDbType.DateTime); parameters[0].set_Value(FromDate); parameters[1] = new System.Data.SqlClient.SqlParameter("@d_end", System.Data.SqlDbType.DateTime); parameters[1].set_Value(ToDate.AddDays((double) 1.0).AddSeconds((double) -1.0)); System.Data.DataSet set = DALSql.ExecuteDataSet("exec up_reload_usl_el_ulenergo_null_opl2 @d_beg, @d_end", parameters); set.Tables.get_Item(0).set_TableName("ES" + ToDate.ToString("ddMMyy")); set.Tables.get_Item(0).Columns.get_Item("nlic").set_MaxLength(6); set.Tables.get_Item(0).Columns.get_Item("nomer").set_MaxLength(13); set.Tables.get_Item(0).Columns.get_Item("pokaz").set_MaxLength(6); set.Tables.get_Item(0).Columns.get_Item("pr_dop").set_MaxLength(1); set.Tables.get_Item(0).Columns.get_Item("fio_r").set_MaxLength(50); set.Tables.get_Item(0).Columns.get_Item("adr_r").set_MaxLength(60); set.Tables.get_Item(0).Columns.get_Item("tname").set_MaxLength(50); set.Tables.get_Item(0).Columns.get_Item("point").set_MaxLength(50); DBF.WriteToFile((System.Data.DataTable) set.Tables.get_Item(0), DestinationDir, set.Tables.get_Item(0).get_TableName(), DbFileFormat.dBase3, false, false); decimal tableColumnSumm = (decimal) DBF.GetTableColumnSumm((System.Data.DataTable) set.Tables.get_Item(0), "summa"); decimal tableColumnSummPositive = (decimal) DBF.GetTableColumnSummPositive((System.Data.DataTable) set.Tables.get_Item(0), "summa"); string[] strArray = new string[] { "Выгрузка произведена в файл ", set.Tables.get_Item(0).get_TableName(), ".DBF", System.Environment.get_NewLine(), "Общая сумма выгрузки составила ", tableColumnSumm.ToString("F"), System.Environment.get_NewLine(), System.Environment.get_NewLine(), "В т.ч. аннулирование оплаты ", (tableColumnSumm - tableColumnSummPositive).ToString("F"), System.Environment.get_NewLine(), "оплата бухгалтером ", tableColumnSummPositive.ToString("F") }; str = string.Concat(strArray); } catch (System.Exception exception) { throw new System.ApplicationException("Произошла ошибка выгрузки", exception); } throw new System.ApplicationException(str); }
public static string DateFriendly (System.DateTime fecha) { System.DateTime today = System.DateTime.Now; System.DateTime midnight= new System.DateTime(today.Year, today.Month, today.Day); if (fecha > midnight) { return "Hoy " + fecha.ToShortTimeString(); } else if (fecha.AddDays(1) > midnight) { return "Ayer "+fecha.ToShortTimeString(); } else if (fecha.AddDays(7) > midnight) { return fecha.ToString("dddd") + " " + fecha.ToShortTimeString(); } else { return fecha.ToString(); } }
/// <summary> /// Translates a given <see cref="DateTime"/> to a "social" date time string, e.g. "in 10 minutes" or "3 hours ago". /// It compares the <paramref name="postedTime"/> parameter to the <paramref name="currentTime"/> parameter. /// </summary> /// <param name="postedTime">A time to compare to the <paramref name="currentTime"/> parameter.</param> /// <param name="currentTime">A <see cref="DateTime"/> representing "now".</param> /// <returns>A "social" date time string.</returns> /// <remarks> /// Assuming the <paramref name="currentTime"/> is June 6, 2009 1:00:00 PM (which is a Sunday), /// the following posted dates and times return the following results: /// <list type="bullet"> /// <item>May 10, 1:30:00 PM returns "May 10 at 1:30 PM"</item> /// <item>June 2, 4:59:00 PM returns "Wednesday at 4:59 PM"</item> /// <item>June 5, 2:30:00 PM returns "Yesterday at 2:30 PM"</item> /// <item>June 6, 8:00:00 AM returns "5 hours ago"</item> /// <item>June 6, 12:00:00 PM returns "1 hour ago"</item> /// <item>June 6, 12:30:00 PM returns "30 minutes ago"</item> /// <item>June 6, 12:59:00 PM returns "1 minute ago"</item> /// <item>June 6, 12:59:35 PM returns "25 seconds ago"</item> /// <item>June 6, 12:59:59 PM returns "1 second ago ago"</item> /// <item>June 6, 1:00:01 PM returns "in 1 second"</item> /// <item>June 6, 1:00:08 PM returns "in 8 seconds"</item> /// <item>June 6, 1:01:00 PM returns "in 1 minute"</item> /// <item>June 6, 1:14:00 PM returns "in 14 minutes"</item> /// <item>June 6, 2:00:00 PM returns "in 1 hour"</item> /// <item>June 6, 4:00:00 PM returns "in 3 hours"</item> /// <item>June 7, 5:00:00 PM returns "Tomorrow at 5:00 PM"</item> /// <item>June 10, 3:30:00 PM returns "June 10 at 3:30 PM"</item> /// </list> /// </remarks> /// <example> /// <code> /// DateTime now = new DateTime(2016, 6, 1, 15, 25, 31); /// DateTime postedTime = now.AddSeconds(-1); /// string socialTime = postedTime.ToSocialDate(now); /// (Here, socialTime will be "1 second ago") /// </code> /// </example> public static string ToSocialDate(this System.DateTime postedTime, System.DateTime currentTime) { TimeSpan duration = currentTime - postedTime; if (duration.TotalDays <= -2) { return postedTime.ToString("MMMM") + " " + postedTime.Day + " at " + postedTime.ToShortTimeString(); } if (duration.TotalHours <= -24) { if (postedTime.DayOfWeek == currentTime.AddDays(1).DayOfWeek) { return "Tomorrow at " + postedTime.ToShortTimeString(); } return postedTime.ToString("MMMM") + " " + postedTime.Day + " at " + postedTime.ToShortTimeString(); } if (duration.Hours < -1) { return "in " + (-1 * duration.Hours) + " hours"; } if (duration.Hours == -1) { return "in 1 hour"; } if (duration.Minutes < -1) { return "in " + (-1 * duration.Minutes) + " minutes"; } if (duration.Minutes == -1) { return "in 1 minute"; } if (duration.Seconds < -1) { return "in " + (-1 * duration.Seconds) + " seconds"; } if (duration.Seconds == -1) { return "in 1 second"; } if (duration.Days > 6) { return postedTime.ToString("MMMM") + " " + postedTime.Day + " at " + postedTime.ToShortTimeString(); } if (duration.TotalDays >= 2) { return postedTime.DayOfWeek + " at " + postedTime.ToShortTimeString(); } if (duration.TotalHours >= 24) { if (postedTime.DayOfWeek == currentTime.AddDays(-1).DayOfWeek) { return "Yesterday at " + postedTime.ToShortTimeString(); } return postedTime.DayOfWeek + " at " + postedTime.ToShortTimeString(); } if (duration.Hours > 1) { return duration.Hours + " hours ago"; } if (duration.Hours == 1) { return "1 hour ago"; } if (duration.Minutes > 1) { return duration.Minutes + " minutes ago"; } if (duration.Minutes == 1) { return "1 minute ago"; } if (duration.Seconds > 1) { return duration.Seconds + " seconds ago"; } if (duration.Seconds <= 1) { return "1 second ago"; } return postedTime.ToString("MMMM") + " " + postedTime.Day + " at " + postedTime.ToShortTimeString(); }
//获取日期是当年的第几周 public static int DatePart(System.DateTime dt) { int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几 int daydiff = (-1) * (weeknow + 1);//今日与上周末的天数差 int days = dt.AddDays(daydiff).DayOfYear;//上周末是本年第几天 int weeks = days / 7; if (days % 7 != 0) { weeks++; } //此时,weeks为上周是本年的第几周 return (weeks + 1); }
public static IEnumerable<DateTime> WeeksBetween(this DateTime date1, DateTime date2) { for (var date = new[] { date1, date2 }.Min().StartOfWeek(); date <= new[] { date1, date2 }.Max(); date = date.AddDays(7)) yield return date.StartOfWeek(); }
public virtual DateTime GetWeekMondayDate(System.DateTime dtmDate) { //string strWeekMondayDate = null; System.DateTime dtmWeekMonday = default(System.DateTime); int intWeekDay = 0; // //dtmWeekMonday = dtmDate intWeekDay = (int)dtmDate.DayOfWeek; // DatePart(DateInterval.Weekday, dtmDate); //While intWeekDay <> 2 // dtmWeekMonday = DateAdd(DateInterval.Weekday, -1, dtmWeekMonday) //End While dtmWeekMonday = dtmDate.AddDays(-((int)dtmDate.DayOfWeek) + 1); //strWeekMondayDate = Convert.ToString(DateValue(dtmWeekMonday)); return dtmWeekMonday; }
public System.DateTime StartingDate1(System.DateTime getDate) { System.DateTime startDate = default(System.DateTime); int i = 0; i = Weekday(getDate, DayOfWeek.Saturday); i = 8 - i; startDate = getDate.AddDays(i); return startDate; }
private bool CheckDay(System.DateTime time) { if (!WeeklySession) return true; if (StartTime.CompareTo(EndTime) > 0) { //if session goes over midnight and it's the start session day, //make sure start day occurs in session if (time.DayOfWeek == StartDay) { return time.TimeOfDay.CompareTo(StartTime) >= 0; } //likewise, if day is the end part of a session, verify //time occurs in session System.DateTime yesterday = time.AddDays(-1); if (yesterday.DayOfWeek == EndDay) { return time.TimeOfDay.CompareTo(EndTime) <= 0; } } if(StartDay <= EndDay) return time.DayOfWeek.CompareTo(StartDay) >= 0 && time.DayOfWeek.CompareTo(EndDay) <= 0; else return time.DayOfWeek.CompareTo(EndDay) <=0 || time.DayOfWeek.CompareTo(StartDay) >=0; }
private void PushSprintDates(int sprintNumber, System.DateTime newStartDate, System.DateTime newEndDate, ICollection<Sprint> sprints) { // make sure sprints are ordered by number Sprint[] orderedSprint = sprints.OrderBy(s => s.SprintNumber).ToArray(); // finds the sprint Sprint sprint = orderedSprint.SingleOrDefault(s => s.SprintNumber == sprintNumber); if (sprint == null) return; if (sprintNumber >= 2) { Sprint previous = orderedSprint[sprintNumber - 2]; if (newStartDate <= previous.StartDate.AddDays(1)) throw new WebFaultException<String>("BRE_SPRINT_START_DATE_NOT_ALLOWED", System.Net.HttpStatusCode.BadRequest); } if (newEndDate < sprint.StartDate) throw new WebFaultException<String>("BRE_SPRINT_END_DATE_NOT_ALLOWED", System.Net.HttpStatusCode.BadRequest); // get the number of days to push the sprints int pushDays = 0; int startDatePushDays = (sprintNumber == 1) ? newStartDate.Subtract(sprint.StartDate).Days : 0; // if is the first sprint and the start date was changed, it override the end date change if (startDatePushDays != 0) { newEndDate = newEndDate.AddDays(startDatePushDays); pushDays = startDatePushDays; } else { pushDays = newEndDate.Subtract(sprint.EndDate).Days; } if (newStartDate > newEndDate) throw new WebFaultException<String>("BRE_SPRINT_START_DATE_NOT_ALLOWED", System.Net.HttpStatusCode.BadRequest); // update the sprint start date sprint.StartDate = newStartDate; sprint.EndDate = newEndDate; // pushs the following sprints, if this one is not the last if (sprintNumber <= orderedSprint.Length && pushDays != 0) { for (int i = sprintNumber; i < orderedSprint.Length; i++) { int days = calendar.CalcWorkDayCount(orderedSprint[i].StartDate, orderedSprint[i].EndDate); orderedSprint[i].StartDate = calendar.AddWorkDays(orderedSprint[i - 1].EndDate, 1); orderedSprint[i].EndDate = calendar.AddWorkDays(orderedSprint[i].StartDate, days); } } // moves the previus sprint end date one day before this one start date if (sprintNumber > 1) orderedSprint[sprintNumber - 2].EndDate = calendar.SubWorkDays(newStartDate, 1); }
public static IEnumerable<DateTime> DaysBetween(this DateTime date1, DateTime date2) { for (var date = new[] { date1, date2 }.Min(); date <= new[] { date1, date2 }.Max(); date = date.AddDays(1)) yield return date.Date; }
private System.DateTime getFreeDate(System.DateTime trialDate) { if (eventTable.Rows.Count > 0) { System.DateTime testDate; bool trialDateOK = false; while (!trialDateOK) { trialDateOK = true; foreach (System.Data.DataRow testRow in eventTable.Rows) { testDate = (System.DateTime)testRow["EventDate"]; if (testDate.Date == trialDate.Date) { trialDateOK = false; trialDate = trialDate.AddDays(1); } } } } return trialDate; }
/// <summary>Months Between 2 dates this will output a decimal to 0dp /// <para>StartDate = Start Date for the calculation</para> /// <para>EndDate = End Date for the calculation</para> /// <para>roundup = round up months from mid point up</para> /// </summary> public int GetMonthsBetween(System.DateTime StartDate, System.DateTime EndDate, bool roundup) { if(roundup == true) { EndDate = EndDate.AddDays(1); } var monthDiff = Math.Abs((EndDate.Year * 12 + (EndDate.Month - 1)) - (StartDate.Year * 12 + (StartDate.Month - 1))); if (StartDate.AddMonths(monthDiff) > EndDate || EndDate.Day < StartDate.Day) { return monthDiff - 1; } else { return monthDiff; } }