2013-04-23 4 views
0
나는 하나의 문자열, 그것은 날짜 형식처럼 보일 것 string date="01/04/2013"

Convert.ToDateTime() 문제는

사장님 위의 문자열 형식에 대한 2013년 1월 4일

되어있다

: 04 일이다 01 월, 2013 년. 이제

난 아래를 참조 convert.todatetime()

을 사용하고 있습니다 :

DateTime **DateTimeValue** =Convert.ToDateTime(date); 

내 시스템의 DateTimeValue 반환 : 01-04-2013T00:00:00// 날짜 1 달 2 일

그러나 변환 할 때 동일 DateTimeValue는 다른 시스템의 수익입니다. :04-01-2013T00:00:00// 첫 번째 달과 두 번째 달

Convert.DateTime()은 다른 시스템에서 다른 날짜를 반환합니까?

는 답 :

는 지금은 NVARCHAR에 내 데이터베이스 Coloumn 데이터 형식 날짜 시간을 변경했습니다. 그래서 나는 DateTime으로 변환하고 싶지 않아야한다. 이것은 모든 시스템에서 작동합니다.

감사합니다.

+1

그것은 지역 설정이 사용하고있는이 기계에 다른 것을 할 수 있습니다. – GrandMasterFlush

+0

아마 문화 설정과 관련이 있습니다. 이것이 내 첫 번째 추측 일 것입니다. – Tim

+0

문화 설정/현지화 문제로 보입니다. 참조 : http://stackoverflow.com/questions/5798908/how-to-produce-localized-date-string-with-cultureinfo – jordanhill123

답변

0

지역/현지화 설정 문제입니다. 이러한 설정에 대해 모른 채 이러한 상황이 발생하지 않도록하는 방법은 다음과 같이 날짜 문자열을 설정하는 것입니다. yyyy-mm-dd. 항상 4월 2013

여기

더 많은 정보에 대한 Convert.ToDateTime 1로 간주됩니다 2013-04-01 : http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx

관련 비트 : 값이 null이 아닌 경우, 반환 값은 결과가

입니다 현재 문화권에 대해 초기화 된 DateTimeFormatInfo 개체의 서식 지정 정보를 사용하여 DateTime.Parse 메서드를 값에 호출합니다.

0

PC의 제어판을 사용하는 경우 지역 및 언어 옵션 (사용자의 Windows 버전에 따라 다를 수 있음)이 표시됩니다. 여기에서 길고 짧은 날짜와 시간 형식을 지정할 수 있습니다.

형식을 동일하게 유지하려면 날짜 시간에 형식 집합 (예 : here)으로 ToString() 메서드를 사용하십시오.

3

왜 Convert.DateTime()이 다른 시스템으로 반환되는지 다른 시스템 다른 시스템에서 ???

문자열을 datetime으로 변환하기 위해 현재 문화권을 사용하기 때문에. 어떤 문화권에서는 그 달이 그 날짜 이전에, 다른 문화권에서는 그 반대가옵니다.

문화권을 지정하거나 (en-US과 유사)을 사용하거나 DateTime.ParseExact을 사용하여 형식을 지정할 수 있습니다.

string date="01/04/2013"; 
// day 4 month 1 
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture); 

또는 일반적

// day 4 month 1 
DateTime dt = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

는 입력이 올바른 형식인지 감지 할 TryParse 방법을 사용하는 것이 좋다.

0

이 시도 할 수 있습니다 :

string date = "01/04/2013"; 
     DateTime dtTime; 
     if (DateTime.TryParseExact(date, "dd/MM/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture, 
      System.Globalization.DateTimeStyles.None, out dtTime)) 
     { 
      Console.WriteLine(dtTime); 
     }