C# 如何将类型从字符串更改为DateTimeOffset对象

C# 如何将类型从字符串更改为DateTimeOffset对象,c#,datetimeoffset,C#,Datetimeoffset,我正在尝试将字符串的类型更改为DateTimeOffset对象 var Result = Convert.ChangeType("2017-02-27T18:00:00.0000000+01:00", typeof(DateTimeOffset), CultureInfo.InvariantCulture); 我也试过用这些弦 2017-02-27 18:00:00Z 2017年2月27日18:00:00 但是我总是得到一个无效的异常 传递给变更类型的正确字符串是什么?由于开发原因,我

我正在尝试将字符串的类型更改为
DateTimeOffset
对象

var Result = Convert.ChangeType("2017-02-27T18:00:00.0000000+01:00",
    typeof(DateTimeOffset), CultureInfo.InvariantCulture);
我也试过用这些弦

2017-02-27 18:00:00Z

2017年2月27日18:00:00

但是我总是得到一个
无效的异常


传递给
变更类型的正确字符串是什么?由于开发原因,我无法使用
DateTimeOffset.Parse
方法。

如果无法使用
DateTime.Parse()
,请尝试以下操作:

var dateTime = (DateTime)Convert.ChangeType(stringDateTime,
        typeof(DateTime), CultureInfo.InvariantCulture);

var dateTimeOffset = new DateTimeOffset(dateTime); 
这似乎适用于问题中的所有示例输入字符串


或者,您可以尝试
TypeDescriptor.GetConverter()

但是,当尝试从2017年2月27日18:00:00
转换时,这不起作用


检查有关
string
DateTimeOffset
转换的一些详细信息。

您可以使用
DateTime.Parse
?如果是这样的话,将
DateTime
转换为
DateTimeOffset
是很简单的。不幸的是,出于开发原因,我不能使用DateTimeOffset.Parse作为仅供参考的DateTime.Parse和DateTimeOffset.Parse不一样。他问的是一个替代功能,而不是你在帖子中明确表示不能使用的功能。在这种情况下,“出于发展原因”是什么意思?您是否也被阻止实现自己的解析器?
var converter = TypeDescriptor.GetConverter(typeof(DateTimeOffset));
var result = converter.CanConvertFrom(typeof(string)) ?
    (DateTimeOffset)converter.ConvertFrom(stringDateTime) :
    new DateTimeOffset();