【发布时间】:2019-10-31 13:22:38
【问题描述】:
即使我提供时区也会发生这种情况。
var dateString = "2008-09-22T14:01:54.9571247Z";
var dateTime = Convert.ChangeType(dateString, typeof(DateTime)); // works
var dateTimeOffset = Convert.ChangeType(dateString, typeof(DateTimeOffset)); // throws InvalidCast exception
为什么会这样?
我正在尝试使用Convert.ChangeType 即时实现一个包罗万象的类型转换器。它适用于除DateTimeOffset之外的其他类型(例如float int、string -> DateTime)。
【问题讨论】:
-
因为 DateTimeOffset 没有实现 IConvertible
-
您不能将 DateTime 转换为 DateTimeOffset。偏移量是两个对象之间的差异。
-
@jdweng
An offset is the difference between two objects.你在想TimeSpan吗?或者可能被名字弄糊涂了?更好的类型名称可能是DateTimeWithIncludedOffset。 -
评论区有很多错误信息...
标签: c# datetime type-conversion datetimeoffset