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; } } }