c# - 在 C# 应用程序中根据 TimeZoneId 获取当前文化信息
问题描述
在我的 C# 控制台 (.NET Core) 应用程序中,我将用户 TimeZoneId(例如孟加拉国标准时间)保存到数据库中。现在基于这个时区 ID,我想获取当前的文化信息。更具体地说,我希望有2 个字母的 ISO 名称(例如 BD、US、UK)。我可以使用下面的代码来获取当前的文化信息来获取我的 2 字母 ISO 名称。但它总是显示 - en。原因可能是我在 Windows 10 的控制面板中将语言设置设置为英语。所以我没有找到预期的输出。这就是为什么我想根据 TimeZoneId 获取文化信息,因为它被保存到数据库中。我用来获取当前文化的代码:
CultureInfo ci = CultureInfo.InstalledUICulture;
Console.WriteLine("Default Language Info:");
Console.WriteLine("* Name: {0}", ci.Name);
Console.WriteLine("* Display Name: {0}", ci.DisplayName);
Console.WriteLine("* English Name: {0}", ci.EnglishName);
Console.WriteLine("* 2-letter ISO Name: {0}", ci.TwoLetterISOLanguageName);
Console.WriteLine("* 3-letter ISO Name: {0}", ci.ThreeLetterISOLanguageName);
电流输出:
谁能给我一个 C# 示例来获得我的解决方案?
解决方案
时区和文化/地区是正交的概念。它们完全断开连接。人们无法从时区区分文化,反之亦然。
例如,我可能是说英语的美国人(文化代码en-US
),但我可能正在日本旅行或居住(IANA 时区Asia/Tokyo
,Windows 时区 ID Tokyo Standard Time
)。
在 .NET 中更具体:
CultureInfo.CurrentCulture // how do you want your numbers and dates to be formatted?
CultureInfo.CurrentUICulture // what language and dialect do you speak?
TimeZoneInfo.Local.Id // what time zone are you observing? (on the local computer)
推荐阅读
- r - 在 R 中使用 purrr::rerun() 引导平均值的标准误差
- tensorflow - 使用 Tensorflow + Keras 的对象检测项目(根架构)。用于准确训练模型的图像样本大小?
- excel - 将工作簿中的多张工作表保存到新工作簿中
- python - Python - 使用请求时发布请求失败
- node.js - 使用 Node.js 将大量文件上传到 Google Storage 存储桶
- powershell - Adding Open Type Fonts to a Private Font Collection using Add Font File method
- ruby-on-rails - Ruby on Rails 和 Redis:未初始化的常量 Redis::Namespace
- java - 给出不一致答案的 2 个日历实例之间的差异
- objective-c - 我应该如何将数据发送到 iOS 中的套接字
- python - SQL 数据库是否比大型 Pandas 数据框更节省内存/性能?