Reputation: 300
I have 2 strings like this - "Aug 14, 2019 09:56:33.359571620" and "Aug 14, 2019 09:56:33.359584300" . I want to convert it into DateTime format in C# so that I can get the difference between two timestamps in Nanoseconds. How to do this?
I tried something like this -
DateTime MyDateTime = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime.AddTicks(359571620);
DateTime MyDateTime2 = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime2.AddTicks(359584300);
TimeSpan ts = MyDateTime2 - MyDateTime;
Console.WriteLine(ts.Ticks);
The above code returns 0 but I am expecting 12680 as the output.
Upvotes: 0
Views: 99
Reputation: 4260
You should assign it back after adding ticks
DateTime MyDateTime = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime = MyDateTime.AddTicks(359571620);
DateTime MyDateTime2 = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime2 = MyDateTime2.AddTicks(359584300);
TimeSpan ts = MyDateTime2 - MyDateTime;
Console.WriteLine(ts.Ticks);
DateTime.AddTicks does not modify that date value, instead it returns a new one
Upvotes: 2
Reputation: 752
Try this
string dateformat = "Aug 14, 2019 09:56:33.359571620 Eastern Daylight Time";
DateTime anser = DateTime.ParseExact(dateformat.Substring(0,dateformat.IndexOf(".")), "MMM dd, yyyy hh:mm:ss", CultureInfo.InvariantCulture);
Based on TimeZone
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
string dateformat = "Aug 14, 2019 09:56:33.359571620 Eastern Daylight Time";
DateTime anser = DateTime.ParseExact(dateformat.Substring(0,dateformat.IndexOf(".")), "MMM dd, yyyy hh:mm:ss", CultureInfo.InvariantCulture);
DateTime dateeee=TimeZoneInfo.ConvertTimeFromUtc(anser, tzi);
Upvotes: 0