/// <summary> /// Adds nanoseconds to this instance of DateTime /// </summary> /// <param name="nanoseconds"></param> /// <returns></returns> public DateTime AddNanoseconds(double nanoseconds) { DateTime universal = ToUniversalTime(); DateTime result = universal.AddNanosecondsInternal(System.Math.Round(nanoseconds)); return(result.ToTimeZone(TimeZone)); }
/// <summary> /// Adds a timespan to this instance of DateTime /// </summary> /// <param name="timeSpan"></param> /// <returns></returns> public DateTime Add(TimeSpan timeSpan) { DateTime result = new DateTime(Universal.Add(timeSpan.ToSystemTimeSpan()), m_nanosecond, Type.TimeZone.UTC, true); result = result.AddMicrosecondsInternal(timeSpan.Microseconds); result = result.AddNanosecondsInternal(timeSpan.Nanoseconds); return(result.ToTimeZone(TimeZone)); }
// All Add* methods that take a double as input split the value into its whole // and fractional parts. The whole part can be added using the corresponding // System.DateTime.Add* method, but the fractional part needs to be added using // our own method so that microseconds and nanoseconds are updated. /// <summary> /// Adds days to this instance of DateTime /// </summary> /// <param name="days"></param> /// <returns></returns> public DateTime AddDays(double days) { DateTime universal = ToUniversalTime(); double whole = System.Math.Floor(days); double fractional = days - whole; DateTime result = universal.AddNanosecondsInternal (fractional * DateTimeHelper.Days2Nanoseconds); result = new DateTime(result.m_base.AddDays(whole), result.m_nanosecond, Type.TimeZone.UTC, true); return(result.ToTimeZone(TimeZone)); }
/// <summary> /// Adds microseconds to this instance of DateTime /// </summary> /// <param name="microseconds"></param> /// <returns></returns> public DateTime AddMicroseconds(double microseconds) { DateTime universal = ToUniversalTime(); double whole = System.Math.Floor(microseconds); double fractional = microseconds - whole; DateTime result = universal.AddNanosecondsInternal (fractional * DateTimeHelper.Microseconds2Nanoseconds); result = result.AddMicrosecondsInternal(whole); return(result.ToTimeZone(TimeZone)); }