Я пытаюсь написать вспомогательную функцию для форматирования даты на основе культуры.В базе данных дата сохраняется как 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 "
Что мне здесь не хватает?Заранее спасибо.