繁体   English   中英

如何使用Convert.ChangeType代替DateTime.ParseExact?

[英]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.DateTimetypeof(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM