gpt4 book ai didi

c# - ASP.NET 中的 Windows 时区缩写

转载 作者:可可西里 更新时间:2023-11-01 13:29:58 26 4
gpt4 key购买 nike

它们真的存在吗?我真的厌倦了必须向我的欧洲用户显示“浪漫标准时间”并试图解释为什么他们的“中欧时间”不能显示为“CET”。如果我解析“Romance Standard Time”并向他们展示“RST”,这对他们来说毫无意义,或者可能被混淆为“Russian Standard Time”或其他废话。

有没有办法从 Windows 中获取普遍接受的缩写?我需要适用于北美、南美、欧洲、非洲和亚洲的产品。

更新:我知道这是一个彻头彻尾的黑客攻击,但它可能会解决我关心的 90% 的问题。如果您有任何建议,我仍然会洗耳恭听 ;)

    /// <summary>
/// Gets the current time zone abbreviation, corrected for Daylight Saving Time (if applicable)
/// </summary>
/// <param name="timeZoneId">The time zone id.</param>
/// <returns></returns>
public static string GetTZAbbrev(string timeZoneId)
{
var timeZoneInfos = TimeZoneInfo.GetSystemTimeZones();
var abbrev = string.Empty;

foreach (var timeZoneInfo in timeZoneInfos)
{
if (timeZoneInfo.Id != timeZoneId) continue;

string[] words;

if (timeZoneInfo.IsDaylightSavingTime(DateTime.UtcNow))
{
words = timeZoneInfo.DaylightName.Split(' ');
}
else
{
words = timeZoneInfo.StandardName.Split(' ');
}

foreach (var word in words)
{
abbrev += word[0];
}
}
return abbrev;
}

最佳答案

嗯,即使是“普遍接受的缩写”也不是一个好主意 - 因为它们太含糊了。如果您说“EDT”,您指的是美国东部夏令时还是澳大利亚东部夏令时?

更普遍接受的技术解决方案是使用 Olson (zoneinfo) 名称,例如“Europe/London”作为标识符。如何将这些呈现给用户是另一回事,但通常我会看到用户界面带有特定时区的地名以及它们与 UTC 的标准(或当前;它会有所不同)偏移量。例如,请参阅 Google 日历的时区设置。

这实际上是一个将标识符国际化(或本地化,我永远记不起来)的问题,不管你怎么做。

关于c# - ASP.NET 中的 Windows 时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com