在C#中解析确切的日期不应强迫我们创建IFormatProvider

时间:2020-03-05 18:53:57  来源:igfitidea点击:

如果我错了,请有人纠正我,但是用C解析yyyy / MM / dd(或者其他特定格式)日期应该像

DateTime.ParseExact(theDate, "yyyy/MM/dd");

但不是,强制我们创建IFormatProvider。

是否有app.config友好的设置方式,所以我不需要每次都这样做?

DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true));

解决方案

回答

IFormatProvider参数可以为null。

回答

创建扩展方法:

public static DateTime ParseExactDateTime(this string dateString, string formatString) {
    return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true));
}

回答

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

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

我们可以使用全球化标签在app.config中设置应用程序区域性。我认为。

回答

我们也可以只创建一次IFormatProvider并将其存储以备后用。

回答

我们也可以使用Convert类

Convert.ToDateTime("2008/11/25");

回答

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

回答

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

如果我们不想每次都指定它,请创建一个扩展方法,该方法可以传递null或者CultureInfo(" en-CA",true)作为格式提供者。

回答

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

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

字符串datevalue = DateValue.ToString(" yyyy-MM-dd");

回答

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