c# – 使用当前文化定义的12或24小时格式,从DateTime获取一小时

前端之家收集整理的这篇文章主要介绍了c# – 使用当前文化定义的12或24小时格式,从DateTime获取一小时前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
.Net内置了DateTime的ToShortTimeString()函数,该函数使用CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern格式.它为en-US返回:“下午5:00”.对于24小时文化,如de-DE,它将返回“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#相关文章