2017-02-27 98 views
1

我試圖將字符串的類型更改爲DateTimeOffset對象。如何將字符串的類型更改爲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

你可以使用'DateTime.Parse'嗎?如果是這樣,轉換'DateTime'到'DateTimeOffset'是微不足道的 –

+0

由於發展原因,我不能使用DateTimeOffset.Parse – Matteo

+0

只是一個FYI,DateTime.Parse和DateTimeOffset.Parse是不一樣的。他問的是另一種功能,而不是你明確表示不能在帖子中使用的功能。 – Aaron

回答

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有關stringDateTimeOffset的一些細節轉換。

相關問題