Как разобрать строковую дату в британской культуре в C #? - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь написать вспомогательную функцию для форматирования даты на основе культуры.В базе данных дата сохраняется как en-US культура.Теперь в моей вспомогательной функции мне может понадобиться проанализировать DateTime или String type date, и поэтому dynamic val в качестве параметра.

Но, в случае передачи строки и парсинга даты в культуру, например ' 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 » ( ММ / ДД / ГГГГ ) и культураis " ru-RU ",

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

возвращает false .Он должен анализироваться как " ДД / ММ / ГГГГ ", т. Е. " 27/11/2019 "

Что мне здесь не хватает?Заранее спасибо.

...