我在控制台应用程序中遇到一个简单的TryParse
问题。
看看:
string DepartureTimeString = Console.ReadLine(); // Enter 2015 01 11 22 45 30
// DepartureTimeString = 2015 01 11 22 45 30
string DepartureTimeStringTrim = DepartureTimeString.Replace(" ", "");
// DepartureTimeStringTrim = 20150111224530
Analyseur = int.TryParse(DepartureTimeStringTrim, out Resultat);
// Analyseur = false
'分析师'是假的。
字符串是20150111224530 ..它只是一个int ..
我确定了VS中的停止点数据。
问题出在哪里?
答案 0 :(得分:6)
您可以在int
或Int32
中存储的最大值为int.MaxValue或2,147,483,647。
您尝试存储在int
类型的变量中的值大于此值,因此操作失败。
您应该使用long
或Int64
来获取此值。
我发现您正试图在DateTime
中存储int
。除非你有充分的理由这样做,否则这不是一个好习惯。您可以使用DateTime.TryParseExact将输入转换为DateTime
。如果您使用int
作为容器,则无法确定用户输入是否为有效日期,但可以使用DateTime
。
正如Tim提及here,您可以在"yyyy MM dd HH mm ss"
中使用DateTime.TryParseExact
作为格式字符串,并将输入值解析为DateTime
。
答案 1 :(得分:4)
这似乎是DateTime
而不是int,所以请使用DateTime.TryParse
:
string departureString = "2015 01 11 22 45 30";
DateTime departure;
if (DateTime.TryParseExact(departureString, "yyyy MM dd HH mm ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out departure))
Console.Write("Departure at: " + departure.ToShortDateString());
无法解析为int
的原因是answered,int
无法保持它(-2,147,483,648到2,147,483,647),您需要更大的数据类型,如{{1} }。
答案 2 :(得分:3)
使用Long而不是Int。 Int并不是那么大。