2011-05-09 7 views
17

아마도 간단한 질문 -DateTime.Parse 미국식 날짜 형식 C#

나는 많은 파일에서 데이터를 읽고 있습니다.

내 문제는 내가 미국의 파일의 날짜 읽고 있어요 때, 내가 지금처럼 분석하는 것이있다 : 그러나 그것은 포맷,

DateSold = DateTime.Parse(t.Date) 

이가 날짜 형식으로 문자열 t.Date을 구문 분석 유럽 ​​일자의 미국 날짜, 예.

날짜가 2011년 3월 1일로 파일에있는 경우가

2011 년 3 월 1 일해야 할 때, 그것은 2011 년 1 월의 세번째로 읽이 일 수있는 방법이 있나요 그래서 그것은 유럽 날짜로 포맷?

답변

28
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

DateTime 자체에는 형식이 지정되어 있지 않으며 해당 형식과 관련된 문자열로 변환 할 때만 사용됩니다.

미국의 형식으로 날짜를 보려면 구문 분석 할 때 ToString 메서드

string americanFormat = dt.ToString("MM/dd/yyyy"); 
5

사용 DateTime.ParseExact 또는 DateTime.TryParseExact에 형식을 전달하고 너무 ToString로 포맷 할 때 형식 문자열을 지정합니다.

파싱 된 후 "미국 날짜"와 같은 것은 존재하지 않습니다. DateTime 값은 이고 형식 지정의 개념이 없습니다.

형식 부분과 마찬가지로 실제로 Parse 부분에 관심이없는 것 같습니다.

string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 

...하지만 난 당신이 구문 분석 모두 명시 적으로 형식을 제어하는 ​​것이 좋습니다 것입니다.

다른 파일 형식을 사용하는 경우 각 파일을 읽을 때 다른 형식 문자열을 제공해야합니다. 그렇다면 어떻게 형식 데이터는 별도의 결정입니다.

1

미리 형식을 알고있는 경우 미국식 형식을 형식 문자열로 사용하여 DateTime.ParseExact을 사용할 수 있습니다.

13

미국 형식의 파일 인 파일에서 날짜를 파싱하려면 다음과 같이 미국 문화권 정보를 구문 분석 함수에 전달하면됩니다.

var usCulture = "en-US"; 
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false)); 

이렇게하면 구문 분석에 필요한 다른 영역마다 문화 문자열을 간단히 바꿀 수 있습니다. 또한 더 이상 각 문화권의 특정 날짜/시간 형식 뉘앙스를 조사 할 필요가 없습니다 .Net은 설계된대로이를 처리합니다.

+0

이것은 전혀 대답하지 않습니다.OP는 미국 날짜를 유럽 연합으로 파싱하는 방법을 묻는 중이었습니다. 미국 날짜를 미국 날짜로 파싱하는 방법을 간단히 말해 줬습니다. – mathgenius

0
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012  
string formatteddate=DateTime.Now.ToString("D") // output: Monday, November 08, 2012  
string formatteddate=DateTime.Now.ToString("f") // output: Monday, November 08, 2012 3:39 PM  
string formatteddate=DateTime.Now.ToString("g") // output: Monday, November 08, 2012 3:39:46 PM  
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012 3:39 PM 

여기에 asp.net의 날짜 - 시간 형식이 나와 있습니다.

http://dateformat.blogspot.in/2012/09/date-time-format-in-c-aspnet.html

+0

질문은 datetime을 구문 분석하는 것이지 출력의 형식을 지정하는 것이 아닙니다. 문제는 'DateTime.Parse()'메소드의 오버로드를 사용하여 해결할 수 있습니다. 올바른 문화 정보를 지정하십시오 :'dateValue = DateTime.Parse (dateString, new CultureInfo ("fr-FR", false));' – opewix

+0

허용되는 대답이 훨씬 낫습니다. –

+2

1과 5는 동일하지만 출력이 다릅니다. 'string formatteddate = DateTime.Now.ToString ("d")'. 어떻게 가능합니까? –