2012-11-01 3 views
0

DateTime에 문제가있는 경우 날짜 선택 도구가있는 섹션과 문화권이 en-GB로 설정되어 있고 날짜가 2012 년 1 월 11 일 (dd/mm/yyyy) 인 경우 섹션이 있습니다. 문화권이 중국어 (zh-CN)로 바뀌고 날짜가 이전 문화권 형식으로 전달되고 DateTime으로 변환 될 때 날짜/시간은 문화가 (yyyy/mm/dd) 일 때 2012/1/11이됩니다.문화 변경 날짜 시간 전환

2012 년 11 월 1 일부터 11 월이되어야 전환이 잘못 될 수있는 유일한 문화 인 것 같습니다.

아무도 왜 제대로 변환되지 않는 아이디어가 있습니까?

죄송 한데요,이 사람은 내 자신의 잘못입니다. 자세한 정보가 필요합니다.

우리는 사용자가 날짜 범위를 선택할 수있는보고 양식을 사용합니다. 우리가 사용하는 양식에서 날짜 범위 선택 도구 (http://www.filamentgroup.com/lab/update_date_range_picker_with_jquery_ui/)를 사용하여 읽기 전용 텍스트 상자를 채 웁니다. 결과를 필터링하기 위해 제출됩니다. 사용자는 현재 culture를 드롭 다운에서 선택할 수 있습니다 (사용자가 브라우저 설정을 변경하지 않고도 쉽게 영어와 중국어 간 전환을 원할 때 필요). 문화권이 en-GB이면 날짜 범위 문자열에 "01/01/2012- 2012 년 1 월 1 일부터 2012 년 11 월 1 일까지 2012 년 1 월 1 일부터 2012 년 11 월 1 일까지 '07/11/2012 '로 변경됩니다. 사용자가 중국어로 스와핑하면 모든 동일한 쿼리 매개 변수를 사용하는 현재 페이지를 호출하지만 culture 매개 변수가 변경된 상태로 (문화권이 URL 매개 변수로 재정의되도록 허용 함) 즉, dateformat 01/11/2012가 쿼리에 있음을 의미합니다 문자열을 전달할 때 다음을 사용합니다.

DateTime.TryParse(endDateString, out endDate); 

DateTime 개체에 2012 년 1 월 11 일 대신에 2012 년 1 월 11 일의 날짜가 포함됩니다.

날짜 문자열이있는 문화 정보를 저장할 수있는 방법이 있으며 새 문화 정보로 변환 할 때 사용합니다 문화가 바뀌 었습니까?

더 좋은 아이디어는 크게 기뻐할 것입니다. en-GB에서 en-IN (인도)으로 스와핑하는 것이 es-MX (멕시코)로 스와핑하는 것처럼 잘 작동하는 것 같습니다. 그것은 단지 중국인 인 것처럼 보이지만이 언어 날짜 형식을 기반으로하는 행운 일 수 있습니다.

시간을내어 읽어 주셔서 감사합니다.

+0

쇼 당신은 문화를 변경하는 방법과 어떻게 값을 전달합니다. –

+0

이것은 문자열에 날짜를 저장할 때 일반적으로 발생하는 문제입니다. 그래서 DateTimePicker는 문자열을 사용하지 않습니다. 그리고 왜 당신은 자신의 코드에서 문자열을 사용해서는 안됩니다. –

+0

날짜를 문자열에 저장하지 않지만 날짜 문자열을 클라이언트에서 서버로 가져 와서 DateTime 객체로 파싱해야합니다. – user351711

답변

0
DateTime.TryParse(endDateString, out endDate); 

은 서버의 기본 문화권을 사용합니다.

기본 솔루션은 다음과 같습니다

var ci = GetCultureInfoFromRequest(); 
DateTime.TryParse(endDateString, out endDate, ci); 
+0

나는 이런 식으로 갔다. 불행히도 우리는 현재 날짜가 정해진 문화권을 저장 한 다음 교환하는 경우이를 사용해야한다. 모든 사람들의 제안에 감사드립니다. – user351711

0

datetime을 처리하지 않고 저장하는 경우 문자열을 사용하여 datetime을 이동합니다. 그런 다음 데이터베이스에 저장하기 전에 형식을 변경할 수 있습니다.