2014-02-25 37 views
2

我有我寫的C#應用​​程序,但我的Convert.ToDateTime超過09:59不工作?Convert.ToDateTime不能超過09:59?

這裏是我的代碼:

strDateTime = Convert.ToDateTime(arr[3].TrimStart('[').Substring(0, 11) + " " + arr[3].TrimStart('[').Substring(13, 7)); 

這是什麼在arr[3]

[20 /二月/ 2014:14:21:32 +0100]

其快把我逼瘋!

感謝

+1

我不認爲第一個冒號應該有 – Rob

+0

我認爲你正趕上':'在指定的日期和時間的結束。請檢查並查看是否使子串長度更短(以排除':')會得到您所需的行爲 –

+0

您究竟想要完成什麼? –

回答

2

Substring不正確。這應該工作(和更具有可讀性):

string both = arr[3].Trim('[', ']'); 
string datePart = both.Substring(0, 11); 
string timePart = both.Substring(12); 
string dateTimePart = string.Format("{0} {1}", datePart, timePart); 
DateTime dateTime = DateTime.Parse(dateTimePart); 

或者使用DateTimeOffSet.Parse

DateTimeOffset offset = DateTimeOffset.Parse(dateTimePart); 
1

問題1:您是從13日指數截斷的時間,但在你的字符串時從第12位字符開始

解決方案1:你應該提取指數位置12的時間20(12 + 8)個字符。

替換此:

arr[3].TrimStart('[').Substring(0, 11) + " " + arr[3].TrimStart('[').Substring(13, 7) 

這一點:

arr[3].TrimStart('[').Substring(0, 11) + " " + arr[3].TrimStart('[').Substring(12, 8) 

建議您需要使用DateTime.ParseExact()解析在下面需要自定義格式的日期時間:

DateTime.ParseExact(str, "dd/MMM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

完整代碼:

string arr = "[20/Feb/2014:14:21:32 +0100]"; 
string str=arr.TrimStart('[').Substring(0, 11) + " " + arr.TrimStart('[').Substring(12, 8); 
DateTime strDateTime = DateTime.ParseExact(str, "dd/MMM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 
7
string s = "[20/Feb/2014:14:21:32 +0100]"; 

DateTime d = DateTime.ParseExact(s, @"[dd\/MMM\/yyyy\:HH\:mm\:ss zzzz]", null); 
1

與子

arr[3].TrimStart('[').Substring(13, 7)); 

你沒有得到整個超時字符串[20/Feb/2014:14:21:32 +0100]

你只得到4:21:32而不是14:21:32

嘗試

arr[3].TrimStart('[').Substring(12, 8));