gpt4 book ai didi

c# - 使用当前区域性定义的 12 或 24 小时格式从 DateTime 获取一天中的小时

转载 作者:可可西里 更新时间:2023-11-01 09:08:30 24 4
gpt4 key购买 nike

.Net 具有使用 CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern 格式的日期时间的内置 ToShortTimeString() 函数。它为 en-US 返回类似这样的内容:“5:00 pm”。对于 de-DE 等 24 小时文化,它将返回“17:00”。

我想要的是一种仅返回适用于每种文化的小时(在上述情况下为“下午 5 点”和“17 点”)的方法。最好/最干净的方法是什么?

谢谢!

最佳答案

// displays "15" because my current culture is en-GB
Console.WriteLine(DateTime.Now.ToHourString());

// displays "3 pm"
Console.WriteLine(DateTime.Now.ToHourString(new CultureInfo("en-US")));

// displays "15"
Console.WriteLine(DateTime.Now.ToHourString(new CultureInfo("de-DE")));

// ...

public static class DateTimeExtensions
{
public static string ToHourString(this DateTime dt)
{
return dt.ToHourString(null);
}

public static string ToHourString(this DateTime dt, IFormatProvider provider)
{
DateTimeFormatInfo dtfi = DateTimeFormatInfo.GetInstance(provider);

string format = Regex.Replace(dtfi.ShortTimePattern, @"[^hHt\s]", "");
format = Regex.Replace(format, @"\s+", " ").Trim();

if (format.Length == 0)
return "";

if (format.Length == 1)
format = '%' + format;

return dt.ToString(format, dtfi);
}
}

关于c# - 使用当前区域性定义的 12 或 24 小时格式从 DateTime 获取一天中的小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015040/

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