2016-08-26 1 views
-1

포르투갈어와 스페인어로 복수 언어가있는 응용 프로그램을 사용하는 경우 DD/MM/YYYY을 사용하고 영어의 경우 MM/DD/YYYY을 만들어야합니다. 나는 이것을 사용하고있다.날짜를 DD/MM/YYYY로 바꿈

if (Culture == "English (United States)") 
{ 
    var dataInicial = DateTime.ParseExact(dtini.ToString(), "MM-dd-yyyy h:mm tt", null); 
    var dataFinal = DateTime.ParseExact(dtfim.ToString(), "dd-MM-yyyy h:mm tt", null); 
} 

그러나 그것이 작동하지, 그것은

을주고있다 "문자열이 유효한 날짜 시간으로 인식되지 않았습니다."

"MM-dd-yyyy h : mm tt"및 "dd-MM-yyyy h : mm tt"를 시도했지만 동일한 오류가 발생했습니다.


grdCount.Cells [2]는 .text 내가 가지고 datetime.Inside에 그것의 수행, 지금은 반전 문제가, 문자열 "15/12/2015"나는 12로 변환 할 첫 번째 질문 "는 유효한 날짜 시간으로 인식되지 문자열이되었다"//2015 (15), 그러나 나는군요

if (Culture== "English (United States)") 
        { 
         DateTime data = Convert.ToDateTime(grdCount.Cells[2].Text); 
         var dataInicial = data.ToString("mm-DD-yyyy"); 

         _simulacao.Notas.Rows[u]["DTEMISSAO"] = grdCount.Cells[2].Text; 
         _simulacao.Notas.Rows[u]["DTVENCIMENTO"] = grdCount.Cells[3].Text; 
        } 
+3

불변의 문화권을 사용하여 모든 날짜를 코드에서 처리 한 다음 특정 문화권을 제시해야합니다 (프로세스가 편해질 수 있음). – Aybe

+3

'Culture','dtini' 및'CurrentCulture'의 값은 정확히 무엇입니까? –

+6

당신의 의도는 * 기존 * 날짜 값을 가져 와서 모양을 바꾸는 것 같습니다. 이 경우,'DateTime.ParseExact'를 사용하지 않을 것이고'dtini.ToString ("dd-MM-yyyy")'와 같은 커스텀 포맷을 사용하여 표시 할 것입니다 (이것은'dtini'와' dtfim은 이미'DateTime' 변수입니다) –

답변

2

"일반"DateTime 형식 지정자 ("g"및/또는 "G")를 찾고 있다고 생각합니다.

string formatted = myDateTime.ToString("g"); 

는 사용자의 컴퓨터의 문화를 바탕으로 출력은 "일반"(이 호출로) 날짜 형식을 무거운 할 것입니다. 여기 this 페이지에서 복사로 결과는 다음과 같습니다

2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM (en-US) 
2009-06-15T13:45:30 -> 15/06/2009 13:45:30 (es-ES) 
2009-06-15T13:45:30 -> 2009/6/15 13:45:30 (zh-CN) 
당신은 DateTime.ToString (당신의 전화에서이 형식을 사용) 및 문화적으로 적절한 문자열을 구문 분석을 얻을 수

.

예를 들어,이 문자열 변환을 모두 고려해 볼 수도 있습니다. dtinidtfim (그 무엇을 나타내는가?)이 이상한 일이 아닌 한, DateTime을 가져 와서 날짜 시간으로 다시 변환 할 수 있도록 문자열로 변환하는 것 같습니다. 사용자 입력 객체.

+1

좋은 답변, 저에게 새로운 것을 가르쳐주었습니다. 단점은 미국 기계의 스페인어 사용자가 될 수 있으므로 애플리케이션 로직으로 처리하는 이점을 확인할 수 있지만 확실히 멋진 트릭입니다. – RJB

+1

감사합니다. 프레임 워크가 제대로 작동하도록하는 것이 가장 좋습니다. : P 즉, 현재 컴퓨터의 문화는 지리적 위치와 관계없이 설정됩니다. 따라서 스페인어 사용자는 스페인어로 창 (예 :)을 사용할 가능성이 높으므로 "스페인어"날짜 및 시간 형식을 사용하게됩니다. 그들이 en-us 문화를 사용하고 있다면 미국 영어 형식을 표시합니다. –

0

시간 두 자릿수을, 날짜 날짜 시간 형식을 변경 hh

MM-dd-yyyy hh:mm tt 

dd-MM-yyyy hh:mm tt 
0

@Aybe가 암시 하듯이 불변의 문화로 날짜를 치료 해보십시오. 사용중인 UI 요소에 현재 문화권 서식을 사용하도록 설정하거나 강제 적용합니다 (CultureInfo.DateaTimeFormat).