[英]How can I use Convert.ChangeType instead of DateTime.ParseExact?
我正在编写一个解析器类,该类将string
解析为具有自定义格式的type
。
例如,我想使用Parse<DateTime>("20161018",typeof(DateTime),UnknownFormatProvider)
,它返回已解析的DateTime
;
我知道我可以使用DateTime.ParseExact
将具有特定格式的string
转换为DateTime
但是由于上述原因,我必须使用Convert.ChangeType(object,Type,IFormatProvider)
。
有什么方法可以创建一个IFormatProvider
以便在Convert.ChangeType(object,Type,IFormatProvider)
以使其像DateTime.ParseExact
一样工作吗?
编辑:也许
System.Globalization.DateTimeFormatInfo
应该工作,但我仍然不知道如何将其设置为像DateTime.ParseExact
有什么方法可以创建一个
IFormatProvider
以便在Convert.ChangeType(object,Type,IFormatProvider)
以使其像DateTime.ParseExact
一样工作吗?
我不这么认为。
Convert.ChangeType(Object, TypeCode, IFormatProvider)
和Convert.ChangeType(Object, Type, IFormatProvider)
重载都使用IConvertible.ToDateTime(IFormatProvider)
方法将TypeCode.DateTime
和typeof(DateTime)
作为第二个参数。
http://referencesource.microsoft.com/#mscorlib/system/convert.cs,206 http://referencesource.microsoft.com/#mscorlib/system/convert.cs,325
该方法解释为:
使用指定的区域性特定格式信息将此实例的值转换为等效的 DateTime。
我认为这两个重载仅接受IFormatProvider
参数使用的标准日期和时间格式(如果这些object
作为第一个参数是string
。
这意味着此方法重载不接受第一个参数的任何自定义日期和时间字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.