Cherylaksh
Cherylaksh

Reputation: 300

Convert speciifc format of string to DateTime in C#

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

Answers (2)

Krishna Varma
Krishna Varma

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

Atk
Atk

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

Related Questions