[英]How to get country using IANA timezone or timezone object in C#
我正在尝试通过以下方式之一获取该国家/地区。 我有下面给出的时区、时区 ID 和时区信息。 如果这个可以搞定呀,请帮帮我。
IANA 结果:亚洲/加尔各答
窗口:印度标准时间
TimeZoneInfo: {(UTC+05:30) 金奈、加尔各答、孟买、新德里}
结果: IND 印度
我的Noda Time 项目可以提供 IANA 数据库中的位置信息(如果有的话)。 下面是一些示例代码,使用 Noda Time 中嵌入的默认 IANA 数据库。 您还可以从 NZD 文件加载特定版本的数据 - 每次发布新的 IANA 数据时,我们都会提供新的 NZD 文件。
using NodaTime.TimeZones;
using System;
using System.Linq;
class Program
{
static void Main()
{
DisplayCountryInfo("Europe/London");
DisplayCountryInfo("Asia/Kolkata");
}
static void DisplayCountryInfo(string id)
{
var source = TzdbDateTimeZoneSource.Default;
Console.WriteLine($"ID: {id}");
if (!source.GetIds().Contains(id))
{
Console.WriteLine("ID not found. Aborting");
Console.WriteLine();
return;
}
var canonicalId = source.CanonicalIdMap[id];
Console.WriteLine($"Canonical ID: {canonicalId}");
var location = source.ZoneLocations.FirstOrDefault(loc => loc.ZoneId == canonicalId);
if (location is null)
{
Console.WriteLine($"No location found.");
}
else
{
Console.WriteLine($"Country: {location.CountryName}");
Console.WriteLine($"Code: {location.CountryCode}");
}
Console.WriteLine();
}
}
输出:
ID: Europe/London
Canonical ID: Europe/London
Country: Britain (UK)
Code: GB
ID: Asia/Kolkata
Canonical ID: Asia/Kolkata
Country: India
Code: IN
注意代码是“IN”而不是“IND”; “IN”是印度的 ISO-3166 国家/地区代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.