39
votes

I have DateTimeOffset:

DateTimeOffset myDTO = DateTimeOffset.ParseExact(
                      "2015/01/15 17:37:00 -0500", "yyyy/MM/dd HH:mm:ss zzz", 
                      CultureInfo.InvariantCulture); 
Console.WriteLine(myDTO);

Result => "1/15/2015 17:37:00 -05:00"

How convert to DateTime and add this offset "-0500" in the resulted DateTime

Desired result => "1/15/2015 22:37:00"

2
That would be odd. Something like 1/15/2015 17:37:00 -05:00 normally means "The local time is 17:37, but that's 5 hours behind UTC" - in other words, a result of 1/15/2015 22:37:00 would be useful, as that's the UTC time - but 12:37 would be applying the offset twice. Can you explain more about your context? - Jon Skeet
@JonSkeet oops,I do wrong, I want to be "1/15/2015 22:37:00" - Alex
you can use , DateTimeOffset.DateTime property, ref: docs.microsoft.com/en-us/dotnet/api/…. - SaddamBinSyed

2 Answers

84
votes

Use DateTimeOffset.UtcDateTime:

DateTime utc = myDTO.UtcDateTime; // 01/15/2015 22:37:00
8
votes

You do not have to add the offset to the time when using UTC time. According to your example, you are referring to the UTC time. So this would mean that you can use DateTimeOffset.UtcDateTime like I demonstrated here:

DateTimeOffset myDTO = DateTimeOffset.ParseExact(
          "2015/01/15 17:37:00 -0500", "yyyy/MM/dd HH:mm:ss zzz",
          CultureInfo.InvariantCulture);
Console.WriteLine(myDTO);  //Will print 1/15/2015 17:37:00 -5:00

//Expected result would need to be 1/15/2015 22:37:00 (Which is UTC time)
DateTime utc = myDTO.UtcDateTime;  //Yields another DateTime without the offset.
Console.WriteLine(utc); //Will print 1/15/2015 22:37:00 like asked