在 C# 中解析确切日期不应强制您创建 IFormatProvider
-
09-06-2019 - |
题
如果我错了,请纠正我,但在 C# 中解析 yyyy/MM/dd (或其他特定格式)日期 应该 就像
DateTime.ParseExact(theDate, "yyyy/MM/dd");
但不行,C# 会强制您创建 IFormatProvider。
有没有一种 app.config 友好的方式来设置这个,这样我就不需要每次都这样做?
DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true));
解决方案
IFormatProvider 参数可以为 null。
其他提示
ParseExact 需要一种文化:考虑“yyyy MMM dd”。MMM 将是使用当前区域性的本地化月份名称。
使用当前的应用程序文化:
DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture);
您可以使用 Globalization 标签在 app.config 中设置应用程序区域性。我认为。
创建扩展方法:
public static DateTime ParseExactDateTime(this string dateString, string formatString) {
return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true));
}
它需要格式提供程序来确定特定的日期和时间符号和字符串(例如特定语言中的星期几的名称)。您可以使用 null,在这种情况下,将使用与当前区域性相对应的 CultureInfo 对象。
如果您不想每次都指定它,请创建一个扩展方法,该方法传递 null 或 CultureInfo("en-CA", true) 作为格式提供程序。
您还可以简单地创建 IFormatProvider 一次并将其存储以供以后使用。
您还可以使用 Convert 类
Convert.ToDateTime("2008/11/25");
//将日期转换为MySql兼容格式
DateTime DateValue = Convert.ToDateTime(datetimepicker.text);
字符串日期值 = DateValue.ToString("yyyy-MM-dd");
使用 Globalization.CultureInfo.InvariantCulture 有什么问题?
不隶属于 StackOverflow