我正在尝试编写一个辅助函数来根据区域性格式化日期。在数据库中,日期被保存为 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 ”
我在这里想念什么?预先感谢。