2013-04-01 2 views
-1

C#에서 문자열을 datetime 형식으로 변환하려고합니다."3/21/2013"문자열이 유효한 날짜 시간으로 인식되지 않습니다.

DateTime SnapDate = Convert.ToDateTime(valid(odr, 4)).Date; 

protected string valid(OleDbDataReader myreader, int stval)//if any columns are found null then they are replaced by zero 
{ 
    object val = myreader[stval]; 
    if (val != DBNull.Value) 
     return val.ToString(); 
    else 
    return Convert.ToString(""); 
} 

그리고 다음과 같은 오류가 발생합니다. "문자열이 유효한 DateTime으로 인식되지 않았습니다. 색인 0에서 시작하는 알 수없는 단어가 있습니다."

나는 여러 가지를 시도했다 : parseparseExact 그러나 아직도 그것을 얻지 않았다.

엑셀 시트에서이 데이터를 읽습니다.

+0

.. 'odr' ... ?? –

+1

우리는'valid (...) '를보아야 할 것입니다 –

+0

현재 행 .. read from excel – aahmed325

답변

3

입력 문자열이 영어 (미국) 형식 인 것 같습니다. Parse 방법에 CultureInfo 객체를 지정하십시오 :

DateTime SnapDate = DateTime.Parse(valid(odr, 4), new CultureInfo("en-US")).Date; 

그것은 3/21/2013의 사용자 입력 문자열 유효 M/d/yyyy 형식으로 날짜를 찾기 위해 Parse 방법을 강제 할 것이다. 내가 말할 오히려 시스템 문화를 사용하거나 하나를 선택하는 것보다 것

+0

형식 또는 네임 스페이스 이름 'CultureInfo'을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?) – aahmed325

+0

파일의 맨 위에'using System.Globalization'을 추가하십시오. – MarcinJuraszek

+0

같은 오류 : 문자열이 datetime으로 인식되지 않습니다. – aahmed325

1

는 정확한 날짜 형식을 선택하지 않고 그것을 사용, 같은 :

DateTime dt = DateTime.ParseExact("3/21/2013", "M\\/d\\/yyyy", null); 

없음 모호성을 매개 변수의 순서에, 또는 날짜 구분합니다.

는 참고 : - 그래서 가능한 모호성을 제거 탈출, 슬래시가 date separator, 반드시 슬래시를 의미 내가 슬래시 앞에 백 슬래시를 사용하는 이유는 슬래시를 탈출하는 것입니다.

+2

개인적으로는 사용자 인터페이스로 /에서가 아니라면 개인적으로 날짜의 문자열 표현에 대해 ISO 8601을 사용합니다. –

+0

@ ColinMackay 나는 200 % 동의한다. 어떤 이유로 든 크기를 작게 유지해야한다면, 구두점이없는'yyyyMMdd' 또는'yyyyMMddHHmmssfff'가됩니다. –

+0

필자는 몇 가지 이유로 Windows에서 짧은 날짜 형식을 yyyy-MM-dd로 유지하는 것을 선호합니다. - 그런 식으로보고 싶습니다. 누군가 MM/dd/yyyy를 기대하는 코드를 작성하고이를 ToShortDateString '또는 무언가, 그 때 그것은 위로 불고 위로 나는 문제가있을 것이라는 점을 볼 수있다. –

관련 문제