using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Sleis.Models { public class SimpleTimeSpan { public virtual DateTime? StartsOn { get; set; } public virtual DateTime? EndsOn { get; set; } public SimpleTimeSpan() { //StartsOn = DateTime.MinValue; //EndsOn = DateTime.MaxValue; } public SimpleTimeSpan(DateTime start, DateTime end) { StartsOn = start; EndsOn = end; } public SimpleTimeSpan(DateTime start, string end) { StartsOn = start; if (!String.IsNullOrEmpty(end)) { EndsOn = Convert.ToDateTime(end); } } public SimpleTimeSpan(string start, string end) { if(!String.IsNullOrEmpty(start) && !String.IsNullOrEmpty(end)) { StartsOn = Convert.ToDateTime(start); EndsOn = Convert.ToDateTime(end); } } public int Days { get { if (StartsOn!= null && EndsOn != null) { return GetDays(this.StartsOn.Value, this.EndsOn.Value); } return 0; } } /// /// Calculates a timespan in days. Assumes that All spans start on at least 1. /// /// /// /// public static int GetDays(DateTime start, DateTime end) { //int numOfDays = 0; TimeSpan ts = new TimeSpan(); if (end == null || end == DateTime.MinValue || end > DateTime.Now) { ts = DateTime.Now - start; } else if (start > DateTime.MinValue && start < DateTime.MaxValue) { ts = end - start; } return Convert.ToInt32(Math.Floor(ts.TotalDays) + 1); //return 1 if perfect 0. otherwise all other numbers will be adjusted by the ceiling //return numOfDays == 0 ? 1 : numOfDays; } } }