C# 字符串[]到整数的转换错误
从我的月份数据库中,我提取了一个字符串,其中包含由“,”分隔的所有预订日期时间格式: e、 g{01/01/13 00:00:00、02/01/13 00:00:00等} 然后,我用它的“/”参数分割一天,这样,在DayNumber[0]中,我得到了DayNumber的值: e、 g 现在我无法理解的部分是: 使用Convert.ToInt32抛出、System.FormatException从DayNumber[0]分配DaySpecific的int值:输入字符串的格式不正确 DayNumber[0]的值为“01”,但是转换方法不接受起始值为0的数字 我尝试了DayNumber[0]。ToString 0,但它总是给出一个错误,即过度驾驶不正确 有人知道我怎么解决这个问题吗 如果有一个非常简单的答案,我深表歉意 编辑: 感谢您的回复,但到目前为止还没有解决方案。在我的示例中,{01/01/13}中的{}纯粹用于表示数据集 我包括了一个try-catch,这是一个例外: mscorlib.dll中发生类型为“System.FormatException”的第一次意外异常 System.FormatException:输入字符串的格式不正确。 在System.Number.StringToNumberString str,NumberStyles选项,NumberBuffer&Number,NumberFormatInfo信息,布尔解析十进制 在System.Number.ParseInt32String s、NumberStyles样式、NumberFormatInfo信息中 在System.Int16.Parses、NumberStyles样式、NumberFormatInfo信息中 在System.Int16.parses处 在c:\Users\simon\Documents\Visual Studio 2012\Projects\railway\railway\Controllers\MonthController.cs中的railway.Controllers.MonthController.Index中:第47行 “iisexpress.exe”管理的v4.0.30319:已加载“C:\Users\simon\AppData\Local\Temp\Temp\Temporary ASP.NET Files\root\37a427fe\5dbf5c62\App\u Web\u lt1aaagr.dll”,已加载符号。C# 字符串[]到整数的转换错误,c#,asp.net,asp.net-mvc-4,type-conversion,C#,Asp.net,Asp.net Mvc 4,Type Conversion,从我的月份数据库中,我提取了一个字符串,其中包含由“,”分隔的所有预订日期时间格式: e、 g{01/01/13 00:00:00、02/01/13 00:00:00等} 然后,我用它的“/”参数分割一天,这样,在DayNumber[0]中,我得到了DayNumber的值: e、 g 现在我无法理解的部分是: 使用Convert.ToInt32抛出、System.FormatException从DayNumber[0]分配DaySpecific的int值:输入字符串的格式不正确 DayNumbe
程序“[2276]iisexpress.exe:Managed v4.0.30319”已退出,代码为0 0x0。在您提供的测试数据中,您的算法将使用{01 as day。这将引发格式异常。在转换字符串之前,请确保字符串是您认为的字符串。若要获取列表中第一个日期的日期部分,请执行以下操作:
{01/01/13} becomes Daynumber[0] = '01';
DayNumber[1] = '01' DayNumber[2] = '13'
否则:
int DaySpecific = month.BookedDays.First().Day
如果您的列表是datetime类型,而不是以字符串形式传递日期,那就更好了。这段代码很好用
String bookedDays = month.BookedDays.ToString();
String[] dates = bookedDays.Split(',');
int DaySpecific = DateTime.Parse(dates.First()).Day;
我认为将该值转换为DateTime值可能更有用,如下所示。如果需要,您总是可以只提取日部分
string bookedDays = "01/01/13 00:00:00, 02/01/13 00:00:00";
string[] days = bookedDays.Split(',');
string[] DayNumber = days[0].Split('/');
int DaySpecific = Convert.ToInt16(DayNumber[0]);
请尝试Int16.ParseDayNumber[0],它应该可以很好地处理前导零。更好的选择是将DateTime作为C DateTime对象获取,并从中获取Day属性。Convert.ToInt1601工作正常。您不需要DateTime[]?如果是这样,您可以使用DateTime.TryParseExact。此解决方案就是我选择的解决方案,但我相信其他解决方案也会起到同样的作用。事实证明,int16和Int32转换错误是由于db上的预定天数数据集中用分号代替逗号造成的。感谢您的帮助:感谢您在这方面的帮助。
string bookedDays = "01/01/13 00:00:00, 02/01/13 00:00:00";
string[] days = bookedDays.Split(',');
string[] DayNumber = days[0].Split('/');
int DaySpecific = Convert.ToInt16(DayNumber[0]);
var sample = "{01/01/13 00:00:00, 02/01/13 00:00:00}";
var values = Regex.Matches(sample, @"\d{2}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}")
.OfType<Match>()
.Select(value =>
{
DateTime aux;
if (DateTime.TryParseExact(value.Value, "dd/MM/yy HH:mm:ss",
null, DateTimeStyles.AllowWhiteSpaces, out aux))
return aux as DateTime?;
return null;
})
.Where (date => date != null)
.ToList();
foreach (var date in values)
Console.WriteLine(date.Value.Day);