将日期格式解析为特定文化

时间:2011-06-22 14:01:04

标签: c# asp.net-mvc-2

我住在南非文化en-ZA,我们的日期格式以格式dd/mm/yyyy输入

我有一个接受模型的视图:

public class UserInfoModel
{
    public DateTime DateOfBirth{get;set;}
    // some other properties here
}

当用户输入日期即:04/15/1981我在post方法中获得的日期时间是1981年4月15日,但是,当插入以下日期15/04/1981时,返回的模型中的DateOfBirth属性为null

有没有办法可以改变全局解析日期的方式(在整个应用程序中)

我在web.config中添加了以下内容:

<system.web>
  <globalization culture="en-ZA" uiCulture="en-ZA"/>
</system.web>

但它似乎没有什么区别。

2 个答案:

答案 0 :(得分:6)

尝试将此添加到您的GlobalAsax.cs(位于App_code目录中)

protected void Application_BeginRequest(object sender, EventArgs e)
{
    CultureInfo cInfo = new CultureInfo("en-ZA");
    cInfo.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
    cInfo.DateTimeFormat.DateSeparator = "/";
    Thread.CurrentThread.CurrentCulture = cInfo;
    Thread.CurrentThread.CurrentUICulture = cInfo;
}

答案 1 :(得分:1)

您可以使用扩展方法 e.g。

public static class StringExt 
{
    public static DateTime ParseToDateTimeMyWay(this string iString)
    {
        DateTime dt;
        DateTime.TryParseExact(iString, "dd/MM/yyyy", System.Threading.Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out dt);
        return dt;
    }
}

"04/15/1981".ParseToDateTimeMyWay();