Convert DateTimeOffset to DateTime and add offset to this DateTime
Asked Answered
S

3

79

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"

Superb answered 15/1, 2015 at 8:13 Comment(3)
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?Paratyphoid
@JonSkeet oops,I do wrong, I want to be "1/15/2015 22:37:00"Superb
you can use , DateTimeOffset.DateTime property, ref: learn.microsoft.com/en-us/dotnet/api/….Octoroon
E
169

Use DateTimeOffset.UtcDateTime:

DateTime utc = myDTO.UtcDateTime; // 01/15/2015 22:37:00
Enumerate answered 15/1, 2015 at 8:22 Comment(1)
Darn, you were fast :), nevertheless to me this is the way to go.Tarpley
T
12

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
Tarpley answered 15/1, 2015 at 8:31 Comment(0)
U
2

There is new Property in DateTimeOffset in new version of .net, use it:

DateTimeOffset.LocalDateTime
Unwept answered 9/3, 2023 at 14:30 Comment(1)
It will not yield the result unlike that of the OP.Whiteman

© 2022 - 2024 — McMap. All rights reserved.