public UniversalDateTime AddYears(int value)
        {
            var dt = DateTime.Parse(Value);

            dt = dt.AddYears(value);
            return(UniversalDateTime.Convert(dt.ToUniversalTime()));
        }
        public UniversalDateTime AddTicks(long value)
        {
            var dt = DateTime.Parse(Value);

            dt = dt.AddTicks(value);
            return(UniversalDateTime.Convert(dt.ToUniversalTime()));
        }
        public UniversalDateTime AddSeconds(double value)
        {
            var dt = DateTime.Parse(Value);

            dt = dt.AddSeconds(value);
            return(UniversalDateTime.Convert(dt.ToUniversalTime()));
        }
        public UniversalDateTime AddMonths(int months)
        {
            var dt = DateTime.Parse(Value);

            dt = dt.AddMonths(months);
            return(UniversalDateTime.Convert(dt.ToUniversalTime()));
        }
 /// <summary>
 /// TryParse a datetime string to get the universial timezone
 /// </summary>
 public static bool TryParse(string dateTime, out UniversalDateTime universalDateTime)
 {
     try
     {
         universalDateTime = Parse(dateTime);
         return(true);
     }
     catch (Exception ex)
     {
         universalDateTime = default(UniversalDateTime);
         return(false);
     }
 }
        public UniversalDateTime(int year, int month, int day, int hour, int minute, int second)
        {
            Year   = year;
            Month  = month;
            Day    = day;
            Hour   = hour;
            Minute = minute;
            Second = second;

            var dateTimeParse =
                DateTime.Parse(string.Concat(Year, "-", Month.ToString("00"), "-", Day.ToString("00"), "T", Hour.ToString("00"), ":", Minute.ToString("00"), ":", Second.ToString("00"), "Z"))
                .ToUniversalTime();

            Offset = dateTimeParse.IsInDaylightSavingsTime() ? DaylightOffset : StandardOffset;

            Date      = new UniversalDateTime(Year, Month, Day);
            DayOfYear = Date.DayOfYear;
            DayOfWeek = Date.DayOfWeek;
        }
        public UniversalDateTime(long ticks)
        {
            var dateTime = new DateTime(ticks)
                           .ToUniversalTime();

            Year        = dateTime.Year;
            Month       = dateTime.Month;
            Day         = dateTime.Day;
            Hour        = dateTime.Hour;
            Minute      = dateTime.Minute;
            Second      = dateTime.Second;
            Millisecond = dateTime.Millisecond;

            Offset = dateTime.IsInDaylightSavingsTime() ? DaylightOffset : StandardOffset;

            Date      = new UniversalDateTime(Year, Month, Day);
            DayOfYear = Date.DayOfYear;
            DayOfWeek = Date.DayOfWeek;
        }
        public UniversalDateTime(TimeSpan timeOfDay)
        {
            var utcNow = Now;

            Year  = utcNow.Year;
            Month = utcNow.Month;
            Day   = utcNow.Day;

            Hour        = timeOfDay.Hours;
            Minute      = timeOfDay.Minutes;
            Second      = timeOfDay.Seconds;
            Millisecond = timeOfDay.Milliseconds;

            var dateTimeParse =
                DateTime.Parse(string.Concat(Year, "-", Month.ToString("00"), "-", Day.ToString("00"), "T", Hour.ToString("00"), ":", Minute.ToString("00"), ":", Second.ToString("00"), ".", Millisecond.ToString("00"), "Z"))
                .ToUniversalTime();

            Offset = dateTimeParse.IsInDaylightSavingsTime() ? DaylightOffset : StandardOffset;

            Date      = new UniversalDateTime(Year, Month, Day);
            DayOfYear = Date.DayOfYear;
            DayOfWeek = Date.DayOfWeek;
        }