DateTime TypeConverter

use*_*322 3 c# typeconverter c#-3.0

我有以下代码将字符串转换为类型T.它适用于所有其他类型,但在T类型为DateTime时会出错.

TypeConverter c = TypeDescriptor.GetConverter( typeof (T) );
 return (T) c.ConvertTo( obj, typeof (T) )
Run Code Online (Sandbox Code Playgroud)

我传了一个字符串

obj =  "09/09/2009"
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误{"'DateTimeConverter'无法将'System.String'转换为'System.DateTime'."}

Jon*_*eet 7

如果你知道你得到一个字符串,你可以TypeConverter.ConvertFromString改用它.这适用DateTimeConverter,虽然我不知道为什么ConvertTo不.

例如,这有效:

TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) );
Console.WriteLine((DateTime) c.ConvertFromString("09/09/2009"));
Run Code Online (Sandbox Code Playgroud)

或者,也ConvertFrom适用于:

TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) );
Console.WriteLine((DateTime) c.ConvertFrom("09/09/2009"));
Run Code Online (Sandbox Code Playgroud)

它将转换 a,DateTime因为它是那种转换器.

你应该小心文化问题.