使用正确的偏移量将UTC DateTime转换为EST DateTime

陆克文

我的应用程序以UTC获取DateTime对象,并需要以EST格式将其输出为字符串。我已经尝试了以下代码,但是当我得到输出时,偏移量仍显示为+00:00而不是-05:00

static void Main(string[] args)
    {
        var currentDate = DateTime.Now.ToUniversalTime();
        var convertedTime = ConvertUtcToEasternStandard(currentDate);

        Console.WriteLine(currentDate.ToString("yyyy-MM-ddTHH:mm:sszzz"));
        Console.WriteLine(convertedTime.ToString("yyyy-MM-ddTHH:mm:sszzz"));
    }

private static DateTime ConvertUtcToEasternStandard(DateTime dateTime)
    {
        var easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
        return TimeZoneInfo.ConvertTimeFromUtc(dateTime, easternZone);
    }

输出:

2016-11-18T06:56:14+00:00
2016-11-18T01:56:14+00:00

因此,时间已正确偏移,但当我希望偏移量为-05:00时,偏移量保持在+00:00。知道在使用上述格式字符串输出时如何获取具有正确偏移量的DateTime对象吗?

专员

基本上是不久前API中阅读的,基本上,有了DateTime值,很难获得zzz有用格式偏移量。

使用DateTime值,“ zzz”自定义格式说明符表示本地操作系统时区相对UTC的带符号偏移,以小时和分钟为单位。它不反映实例的DateTime.Kind属性的值。因此,不建议将“ zzz”格式说明符与DateTime值一起使用。

使用DateTimeOffset值,此格式说明符以小时和分钟为单位表示DateTimeOffset值与UTC的偏移量。

偏移量始终以前导符号显示。加号(+)表示UTC之前的小时,减号(-)表示UTC之前的小时。单位偏移量的格式为前导零。


例如,我在美国东部标准时间,这是我的结果:

2016-11-18T07:9:38-05:00
2016-11-18T02:9:38-05:00

显然,UTC时间不应具有的偏移量-05:00


稍微修改您的代码,我们有一个解决方案:

void Main()
{
    var currentDate = DateTimeOffset.Now.ToUniversalTime();
    var convertedTime = ConvertUtcToEasternStandard(currentDate);
    
    var format = "yyyy-MM-ddTHH:m:sszzz";
    Console.WriteLine(currentDate.ToString(format));
    Console.WriteLine(convertedTime.ToString(format));
}

// Define other methods and classes here
private static DateTimeOffset ConvertUtcToEasternStandard(DateTimeOffset dateTime)
{
    var easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    return TimeZoneInfo.ConvertTime(dateTime, easternZone);
}

结果:

2016-11-18T07:17:46+00:00
2016-11-18T02:17:46-05:00

这还差不多。

注意:取代了以前的代码,无知使我受益匪浅,但我没意识到这是行不通的。TimeZoneInfo.ConvertTime需要一个DateTimeOffset我们想要的东西。

如果我们为加上另一种情况Pacific Standard Time

private static DateTimeOffset ConvertUtcToPacificStandard(DateTimeOffset dateTime)
{
    var pacificZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
    return TimeZoneInfo.ConvertTime(dateTime, pacificZone);
}

我们得到正确的结果:

2016-11-17T23:21:21-08:00

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将DateTime转换为JSON DateTime

来自分类Dev

将刻度转换为DateTime

来自分类Dev

将varchar转换为datetime

来自分类Dev

perl DateTime不正确的时区偏移量

来自分类Dev

将datetime转换为strptime

来自分类Dev

如何基于DateTime和TimeZone偏移量获取UTC时间?

来自分类Dev

Excel datetime与C#DateTime的偏移量

来自分类Dev

将DateTimeZone转换为UTC偏移量

来自分类Dev

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

来自分类Dev

Python datetime和utc偏移量转换忽略了时区/夏时制

来自分类Dev

使用Nodatime将DateTime从特定时区转换为UTC?

来自分类Dev

将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

来自分类Dev

Google BigQuery中的DateTime偏移量

来自分类Dev

Datetime隐式转换为Datetimeoffset会导致不正确的偏移量?

来自分类Dev

python:将pywintyptes.datetime转换为datetime.datetime

来自分类Dev

C#-.net核心DateTime转换为UTC分钟偏移

来自分类Dev

如何将日期,时间和UTC偏移量转换为本地DateTime

来自分类Dev

在python中使用UTC偏移量变得疯狂(to_datetime熊猫函数和datetime对象)

来自分类Dev

转换为缺少的加号偏移量datetime字符串为正确的datetime

来自分类Dev

将DateTime转换为JSON DateTime

来自分类Dev

将DateTime转换为Oracle DateTime

来自分类Dev

将datetime转换为strptime

来自分类Dev

将serialdate转换为DateTime

来自分类Dev

将DateTimeZone转换为UTC偏移量

来自分类Dev

将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

来自分类Dev

Google BigQuery中的DateTime偏移量

来自分类Dev

将nvarchar转换为datetime

来自分类Dev

使用WINAPI检索DateTime语言环境偏移量

来自分类Dev

将varchar中的datetime转换为datetime

Related 相关文章

  1. 1

    将DateTime转换为JSON DateTime

  2. 2

    将刻度转换为DateTime

  3. 3

    将varchar转换为datetime

  4. 4

    perl DateTime不正确的时区偏移量

  5. 5

    将datetime转换为strptime

  6. 6

    如何基于DateTime和TimeZone偏移量获取UTC时间?

  7. 7

    Excel datetime与C#DateTime的偏移量

  8. 8

    将DateTimeZone转换为UTC偏移量

  9. 9

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

  10. 10

    Python datetime和utc偏移量转换忽略了时区/夏时制

  11. 11

    使用Nodatime将DateTime从特定时区转换为UTC?

  12. 12

    将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

  13. 13

    Google BigQuery中的DateTime偏移量

  14. 14

    Datetime隐式转换为Datetimeoffset会导致不正确的偏移量?

  15. 15

    python:将pywintyptes.datetime转换为datetime.datetime

  16. 16

    C#-.net核心DateTime转换为UTC分钟偏移

  17. 17

    如何将日期,时间和UTC偏移量转换为本地DateTime

  18. 18

    在python中使用UTC偏移量变得疯狂(to_datetime熊猫函数和datetime对象)

  19. 19

    转换为缺少的加号偏移量datetime字符串为正确的datetime

  20. 20

    将DateTime转换为JSON DateTime

  21. 21

    将DateTime转换为Oracle DateTime

  22. 22

    将datetime转换为strptime

  23. 23

    将serialdate转换为DateTime

  24. 24

    将DateTimeZone转换为UTC偏移量

  25. 25

    将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

  26. 26

    Google BigQuery中的DateTime偏移量

  27. 27

    将nvarchar转换为datetime

  28. 28

    使用WINAPI检索DateTime语言环境偏移量

  29. 29

    将varchar中的datetime转换为datetime

热门标签

归档