将DateTimeOffset转换为DateTime并将偏移量添加到此DateTime

问题描述 投票:7回答:2

我有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”

如何转换为DateTime并在结果DateTime中添加此偏移量“-0500”

// desired result =>“1/15/2015 22:37:00”

c# datetime datetimeoffset
2个回答
27
投票

使用DateTimeOffset.UtcDateTime

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

5
投票

您不必将偏移量添加到使用UTC时间的时间。根据您的示例,您指的是UTC时间。所以这意味着你可以像我在这里演示的那样使用DateTimeOffset.UtcDateTime

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
© www.soinside.com 2019 - 2024. All rights reserved.