2014-02-25 43 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));