代码之家  ›  专栏  ›  技术社区  ›  ThomasArdal

使用时区将DateTime格式化为本地字符串

  •  2
  • ThomasArdal  · 技术社区  · 7 年前

    我需要能够以不同格式的字符串形式获取当前日期。

    TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
    var utcNow = DateTime.UtcNow;
    var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, timeZone);
    Console.WriteLine(localTime.ToShortDateString());
    

    上面的示例将日期打印为 22-01-2018 ,这是丹麦格式。但我需要它把日期打印成 1/22/2018 (仅示例)。

    我知道我可以使用 ToString ,但我需要能够从一系列不同的时区格式化日期(用户选择时区)。

    我能告诉你吗 ToShortDateString 使用另一种文化,如果是,我如何从 TimeZoneInfo CultureInfo ?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Martin Zikmund    7 年前

    你不能直接转换 TimeZoneInfo CultureInfo 不幸地

    问题是,在任何给定的时区中,都有许多国家属于该时区,因此 许多不同的文化背景 .

    太棒了 Noda Time 作者Jon Skeet包括国家代码->时区映射,以便您可以使用该映射来了解哪些国家位于您给定的时区中。但从那以后,你必须以某种方式选择目标国家。