System.IndexOutOfRangeException: Index was outside the bounds of the array
at System.Globalization.DateTimeFormatInfo.InsertHash(TokenHashValue[] hashTable, String str, TokenType tokenType, Int32 tokenValue)
at System.Globalization.DateTimeFormatInfo.CreateTokenHashTable()
at System.Globalization.DateTimeFormatInfo.Tokenize(TokenType TokenMask, TokenType& tokenType, Int32& tokenValue, __DTString& str)
at System.__DTString.GetRegularToken(TokenType& tokenType, Int32& tokenValue, DateTimeFormatInfo dtfi)
at System.DateTimeParse.Lex(DS dps, __DTString& str, DateTimeToken& dtok, DateTimeRawInfo& raw, DateTimeResult& result, DateTimeFormatInfo& dtfi)
at System.DateTimeParse.TryParse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles, DateTimeResult& result)
at System.DateTimeParse.TryParse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles, DateTime& result)
原因很简单: 你把字符串转换成时间时 用的格式,与你用的操作系统里的不一致。
例如:你的转换格式 是 yyyy-MM-dd hh:mm:ss, 而你的操作系统里么有这个格式 就会报上面的错误信息。
简单的解决办法: 控制面板->区域和语言选项->区域选项
在这里,你可以看到:数字,货币,时间,短日期,长日期 的格式。
上面的问题 显然是你系统里的格式 比 我们要转换的长了。
例如:系统里是 yyyy-MM-dd tt hh:mm:ss 你的是 yyyy-MM-dd hh:mm:ss
转换时 数组越界。
所以, 点击“自定义”按钮,在里面的 “时间”页里,把 时间的格式改了,
选个和你要转换的一样的格式。 我这里就是选个 没有 tt 的。 就ok了。
不过这种解决办法不是很好,最好还是取到系统的格式 然后再转换。