日期时间类型转换器

4
我有以下代码将字符串转换为类型T。对于所有其他类型,它都可以正常工作,但是当T的类型为DateTime时会出现错误。
TypeConverter c = TypeDescriptor.GetConverter( typeof (T) );
 return (T) c.ConvertTo( obj, typeof (T) )

I pass in a string like

obj =  "09/09/2009"

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

1个回答

8
如果您知道您将要获取一个字符串,可以使用 TypeConverter.ConvertFromString。这适用于 DateTimeConverter,尽管我不知道为什么 ConvertTo 不行。
例如,以下代码可以工作:
TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) );
Console.WriteLine((DateTime) c.ConvertFromString("09/09/2009"));

或者,只需要使用ConvertFrom也可以:

TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) );
Console.WriteLine((DateTime) c.ConvertFrom("09/09/2009"));

它将转换为DateTime,因为这是它的转换器类型。

但是,您应该注意文化问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接