5

如果我错了,请有人纠正我,但是在 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));
4

9 回答 9

14

IFormatProvider 参数可以为空。

于 2008-09-15T16:54:23.150 回答
6

ParseExact 需要一种文化:考虑“yyyy MMM dd”。MMM 将是使用当前区域性的本地化月份名称。

于 2008-09-15T17:04:44.887 回答
5

使用当前的应用程序文化:

DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture);

您可以使用 Globalization 标签在 app.config 中设置应用程序文化。我认为。

于 2008-09-15T16:59:26.723 回答
3

创建扩展方法:

public static DateTime ParseExactDateTime(this string dateString, string formatString) {
    return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true));
}
于 2008-09-15T16:56:18.107 回答
3

它需要格式提供程序来确定特定的日期和时间符号和字符串(例如特定语言的星期几的名称)。您可以使用 null,在这种情况下,将使用与当前区域性对应的 CultureInfo 对象。

如果您不想每次都指定它,请创建一个扩展方法,将 null 或 CultureInfo("en-CA", true) 作为格式提供程序传递。

于 2008-09-15T17:06:26.707 回答
1

您也可以简单地创建一次 IFormatProvider 并将其存储以供以后使用。

于 2008-09-15T16:59:59.580 回答
1

您还可以使用 Convert 类

Convert.ToDateTime("2008/11/25");
于 2008-09-15T17:02:54.470 回答
0

//将日期转换为MySql兼容格式

DateTime DateValue = Convert.ToDateTime(datetimepicker.text);

字符串日期值 = DateValue.ToString("yyyy-MM-dd");

于 2009-01-07T20:25:10.967 回答
0

使用 Globalization.CultureInfo.InvariantCulture 有什么问题?

于 2010-03-02T17:15:30.093 回答