2010-12-01 5 views
0

dd/MM/yyyy 형식의 문자열을 보내고 있는데이 형식은 web.config 전역 설정에 따라 lv-LV 문화권으로 구문 분석됩니다.DateTime.Parse, 라트비아 문화 설정

나는 그 날짜를 DateTime.Now과 비교하여 과거인지 확인합니다.

DateTime.Parse은 내 문자열을 dd.MM.yyyy 형식으로 변환하지만 DateTime.Now는 형식이므로 비교가 항상 실패합니다.

동일한 스레드 문화권에서 DateTime.Now의 출력이 DateTime.Parse의 출력과 다른 이유는 무엇입니까?

감사합니다!

(업데이트)이 I가 사용하고있는 코드이다

InputText]를이

DateTime date = DateTime.Parse(InputText, CultureInfo.CurrentCulture); 
// Check it's not in the past 
this.IsValid = (date.CompareTo(DateTime.Now) > 0); 

는 [DateTime.Now 이러한 맥락에서 MM에 DD.MM.YYYY 형식의 형태의 입력을 포함는 단순히 시점 인 - LV-LV CultureInfo를 [일]를 사용 .DD.YYYY 포맷은 DateTime 서식이없는 DateTime.Parse

+0

나는 더 완전한 코드를 보여줄 필요가 있다고 생각한다; 'DateTime' ('.Now' 나'.Parse' 같은 결과)은 자신의 포맷을 가지지 않습니다 - ddmm 대 mmdd는'DateTime '이 아닌 * 문자열 표현 *의 속성입니다. '가치 자체. – AakashM

+0

두 날짜를 문자열로 비교하고 있습니까? 두 개의 datetime 구조체를 비교하는 경우 toString이 나타내는 문화권이 중요하지 않습니다. – Alex

답변

2

후 DD.MM.YYYY 형식이다.

보고있는 경우 출력하는 것입니다. 올바른 문화권을 사용하여 날짜를 출력하십시오.

(코드 또는 구성)을 지정하지 않으면
string formatted = DateTime.ToString(new CultureInfo("lv-LV")); 

, 기본 시스템 문화가 (어떤 경우에는, CultureInfo.InvariantCulture 또는)이 사용됩니다 :

DateTime.ToString 그런 CultureInfo 같은 형식 공급자을 과부하가 있습니다.

1

2 개의 날짜 만 비교하려는 경우 먼저 문자열로 변환 할 필요가 없습니다.

DateTime myDate = DateTime.Parse(myDateAsString);//with the correct locale to ensure it's correctly parsed 
if (myDate < DateTime.Now) 
{ 
    //it's in the past 
}