我需要能够以不同格式的字符串形式获取当前日期。
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
?
不幸的是,您无法直接将TimeZoneInfo
转换为CultureInfo
。
问题在于,在任何给定的时区中,都有许多国家属于它,因此许多不同的文化环境。
Jon Skeet的令人敬畏的Noda Time包括国家代码->时区映射,因此您可以使用它来了解哪些国家/地区位于您给定的时区。但是从那里开始,您将不得不以某种方式选择目标国家/地区。