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();