Формат даты синтаксического анализа для конкретной культуры - PullRequest
3 голосов
/ 22 июня 2011

Я живу в южноафриканской культуре en-ZA, наши форматы даты вводятся в формате dd/mm/yyyy

У меня есть вид, который принимает модель:

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

Когда пользователь вводит дату, то есть: 04/15/1981 datetime, который я получаю в моем методе публикации, - 15 апреля 1981 г., однако, когда вставляется следующая дата 15/04/1981, свойство DateOfBirth в возвращаемой модели равно null

Есть ли способ, которым я могу изменить способ синтаксического анализа даты (в моем приложении)

Я добавил в свой web.config следующее:

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

Но, похоже, это не имеет значения.

Ответы [ 2 ]

6 голосов
/ 22 июня 2011

попробуйте добавить это в свой GlobalAsax.cs (находится в каталоге вашего кода приложения)

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 голос
/ 22 июня 2011

Вы можете использовать методы расширения например,

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(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...