public DateTime CreatePeriod(DateTimeSpecificationAlignment align, string year, string month, string day) //, string hour = null, string minute = null, string second = null ) { DateTime baseDateTime; try { baseDateTime = new DateTime(Int32.Parse(year), Int32.Parse(month), Int32.Parse(day)); } catch (Exception ex) { throw new MappingException(String.Format("Could not parse the date parts (y = '{0}', m = '{1}', d = '{2}'.", year, month, day), ex); } DateTime period = new DateTimeSpecification { Alignment = align, BaseDateTime = baseDateTime } .ToDateTime(); return(period); }
internal static DateTime Transform(this DateTime dateTime, DateTimeTransformation transform, DateTimeSpecificationAlignment alignment, Func <DateTime, int, DateTime> relative, Func <DateTime, int, DateTime> exact, Func <DateTime, DateTime> max) { if (transform.IsEmpty) { return(dateTime); } DateTime result = dateTime; if (transform.Type == DateTimeTransformationType.Relative) { result = relative(result, transform.Value); } else { if (transform.Type == DateTimeTransformationType.Exact) { result = exact(result, transform.Value); } else if (transform.Type == DateTimeTransformationType.Max) { result = max(result); } if (alignment == DateTimeSpecificationAlignment.End) { result = relative(result, 1).AddTicks(-1); } } return(result); }