Mega Code Archive

 
Categories / C# / Date Time
 

To Date Time from dmtf date

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace NetworkAssetManager.WMI {     class WMIUtil     {         public static DateTime ToDateTime(string dmtfDate)         {             DateTime initializer = DateTime.MinValue;             int year = initializer.Year;             int month = initializer.Month;             int day = initializer.Day;             int hour = initializer.Hour;             int minute = initializer.Minute;             int second = initializer.Second;             long ticks = 0;             string dmtf = dmtfDate;             DateTime datetime = DateTime.MinValue;             string tempString = string.Empty;             if ((dmtf == null))             {                 return DateTime.MinValue;             }             if ((dmtf.Length == 0))             {                 return DateTime.MinValue;             }             if ((dmtf.Length != 25))             {                 //return DateTime.MinValue;             }             try             {                 tempString = dmtf.Substring(0, 4);                 if (("****" != tempString))                 {                     year = int.Parse(tempString);                 }                 tempString = dmtf.Substring(4, 2);                 if (("**" != tempString))                 {                     month = int.Parse(tempString);                 }                 tempString = dmtf.Substring(6, 2);                 if (("**" != tempString))                 {                     day = int.Parse(tempString);                 }                 tempString = dmtf.Substring(8, 2);                 if (("**" != tempString))                 {                     hour = int.Parse(tempString);                 }                 tempString = dmtf.Substring(10, 2);                 if (("**" != tempString))                 {                     minute = int.Parse(tempString);                 }                 tempString = dmtf.Substring(12, 2);                 if (("**" != tempString))                 {                     second = int.Parse(tempString);                 }                 tempString = dmtf.Substring(15, 6);                 if (("******" != tempString))                 {                     ticks = (long.Parse(tempString) * ((long)((TimeSpan.TicksPerMillisecond / 1000))));                 }                 if (((((((((year < 0)                             || (month < 0))                             || (day < 0))                             || (hour < 0))                             || (minute < 0))                             || (minute < 0))                             || (second < 0))                             || (ticks < 0)))                 {                     return DateTime.MinValue;                 }             }             catch (Exception)             {                 return DateTime.MinValue;             }             datetime = new DateTime(year, month, day, hour, minute, second, 0);             datetime = datetime.AddTicks(ticks);             TimeSpan tickOffset = TimeZone.CurrentTimeZone.GetUtcOffset(datetime);             int UTCOffset = 0;             int OffsetToBeAdjusted = 0;             long OffsetMins = ((long)((tickOffset.Ticks / TimeSpan.TicksPerMinute)));             tempString = dmtf.Substring(22, 3);             if ((tempString != "******"))             {                 tempString = dmtf.Substring(21, 4);                 try                 {                     UTCOffset = int.Parse(tempString);                 }                 catch (Exception)                 { //HACK: (2009/08/06) Sometimes the UTC info in not proper so set UTC to 0 in such cases                      UTCOffset = 0;                      //return DateTime.MinValue;                 }                 OffsetToBeAdjusted = ((int)((OffsetMins - UTCOffset)));                 datetime = datetime.AddMinutes(((double)(OffsetToBeAdjusted)));             }             return datetime;         }     } }