2015-01-11 3 views
1

콘솔 응용 프로그램에서 간단한 TryParse에 문제가 있습니다. 내가 VS의 데이터 정지 점 확인했다
.. 그냥하는 int입니다 .. 문자열은 20150111224530입니다 ..
TryParse가 이유없이 반환 false

'Analyseur'
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 

가 false :

보세요 확인하기.

어디에 문제가 있습니까?

+6

이것은 마치 날짜처럼 보입니다. 왜 'DateTime'대신 'int'로 구문 분석하려고하는 이유가 있을까요? –

+0

어쩌면 아무것도 열심히하려고 ... 그냥 DateTime에 내 문자열을 변환하고 싶습니다. – C0ZEN

답변

6

int 또는 Int32에 저장할 수있는 최대 값은 int.MaxValue 또는 2,147,483,647입니다.

유형이 int 인 변수에 저장하려는 값이이 값보다 커서 조작이 실패합니다. 이 값으로 long 또는 Int64을 사용해야합니다.

DateTimeint에 저장하려고합니다. 좋은 일을하지 않는 한 좋은 습관이 아닙니다. DateTime.TryParseExact을 사용하여 입력을 DateTime으로 변환 할 수 있습니다. int을 컨테이너로 사용하는 경우 사용자 입력이 유효한 날짜인지 여부는 알 수 없지만 DateTime을 사용하는 것이 가능합니다.

Tim 당신이 DateTime.TryParseExact에 형식 문자열로 "yyyy MM dd HH mm ss"을 사용하고 DateTime에 입력 값을 구문 분석 할 수 here을 언급했다. 대신 INT의 DateTime 것으로 보인다

+0

해답을 제공해 주셔서 감사합니다. 그리고 더 많은 단계없이 내 문자열을 DateTime으로 변환 할 수 있습니까? – C0ZEN

+0

예, 가능합니다. – dotctor

+1

작동 : Analyseur = Int64.TryParse (DepartureTimeStringTrim, out Resultat64); – C0ZEN

3

Int 대신 Long을 사용하십시오. Int는 그다지 크지 않습니다.

+5

또는 값이 실제로 나타내는 값인대로'DateTime'을 사용하십시오 ... –

+0

그럴 것이라고 생각했지만 "20150111224530"이 2015-01-11 22 : 45 : 30.000으로 직접 해석된다는 인상을주고 싶지 않았습니다. – Crowcoder

+0

DateTime.ParseExact를 사용하고 패턴을 지정하는 경우 ... –

4

, 그래서 사용 DateTime.TryParse :

int로 해석 할 수없는 이유는 alrady answered입니다
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이 (-2,147,483,648 2,147,483,647에) 그것을 물을 수 없습니다, long과 같은 더 큰 데이터 유형이 필요합니다.

+0

좋은 답변입니다. 나는 심지어 DateTime.TryParseExact을 모른다. 고맙습니다. – C0ZEN