如何在C#中将字符串日期解析为英国文化?

时间:2019-04-07 16:42:03

标签: c# asp.net date culture

我正在尝试编写一个辅助函数来根据区域性格式化日期。在数据库中,日期被保存为 zh-CN 文化。现在,在我的帮助函数中,我可能需要解析 DateTime String 类型的日期,这就是为什么动态值作为参数的原因。

但是,如果传递字符串并解析日期为“ en-GB ”之类的文化,即对于 UK 文化,则无法解析日期。

我的代码:

    public static string FormatDate(dynamic val, bool isShowTime = false)
    {
        string date = "";
        DateTime dateValue;
        string value = val == null ? "" : val.ToString();
        string culture = System.Web.HttpContext.Current.Session["CULTURE"] as String;
        if (culture == null) { culture = "en-US"; }
        CultureInfo ci = Thread.CurrentThread.CurrentCulture;
        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", true);
        if (value != "")
        {
            if (DateTime.TryParse(value, new CultureInfo(culture), DateTimeStyles.None, out dateValue) && Convert.ToDateTime(value, new CultureInfo(culture)) != Convert.ToDateTime("1/1/1900", new CultureInfo(culture)))
            {
                Thread.CurrentThread.CurrentCulture = ci;
                if (isShowTime)
                {
                    date = dateValue.ToShortDateString() + " " + dateValue.ToString("hh:mm tt"); ;
                }
                else
                {
                    date = dateValue.ToShortDateString();
                }
            }
        }
        Thread.CurrentThread.CurrentCulture = ci;

        return date;
    }

假设日期为“ 11/27/2019 ”( MM / DD / YYYY ),文化为“ en-GB “,

DateTime.TryParse(value, new CultureInfo(culture), DateTimeStyles.None, out dateValue)

返回 false 。它应解析为“ DD / MM / YYYY ”,即“ 2019/11/11

我在这里想念什么?预先感谢。

0 个答案:

没有答案