我正在尝试将字符串的类型更改为DateTimeOffset
对象。
var Result = Convert.ChangeType("2017-02-27T18:00:00.0000000+01:00",
typeof(DateTimeOffset), CultureInfo.InvariantCulture);
我也试过这些字符串
2017-02-27 18:00:00Z
02/27/2017 18:00:00
但我总是获得InvalidCastException
。
传递给ChangeType
的正确字符串是什么?出于开发原因,我无法使用DateTimeOffset.Parse
方法。
答案 0 :(得分:1)
如果您无法使用DateTime.Parse()
,请尝试以下操作:
var dateTime = (DateTime)Convert.ChangeType(stringDateTime,
typeof(DateTime), CultureInfo.InvariantCulture);
var dateTimeOffset = new DateTimeOffset(dateTime);
这似乎适用于您问题中的所有示例输入字符串。
或者,您可以尝试TypeDescriptor.GetConverter()
:
var converter = TypeDescriptor.GetConverter(typeof(DateTimeOffset));
var result = converter.CanConvertFrom(typeof(string)) ?
(DateTimeOffset)converter.ConvertFrom(stringDateTime) :
new DateTimeOffset();
但尝试转换02/27/2017 18:00:00
时,这并不起作用。
查看this SO question,了解有关string
到DateTimeOffset
转化的一些详细信息。