2013-03-15 2 views
0

Это мой первый пост здесь. Приложение является WinForm я поставил культуру для применения в качестве ан-ГБ, но при проверке и экономии преобразовать его обратно в ан-США я получаю эту ошибку Строки не recornized в качестве действительного DateTimeСтрока не была признана действительной DateTime

CultureInfo currentCulture = new CultureInfo("en-US"); 
string strCheckDate = CheckConvertCulture(input); 
string date = DateTime.Now.ToString("M/d/yyyy"); 

if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null)> DateTime.ParseExact(date,currentCulture.ToString(),null)) 
{ 
     return false; 
} 
else 
{ 
     return true; 
} 

что я делаю неправильно здесь

Это мой converCurrentCulture код

string strdate = string.Empty; 
CultureInfo currentCulture = CultureInfo.CurrentCulture; 
System.Globalization.DateTimeFormatInfo usDtfi = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat; 
if (currentCulture.ToString() != "en-US") 
{ 
    strdate = Convert.ToDateTime(Culturedate).ToString(usDtfi.ShortDatePattern); 
} 
else 
{ 
    strdate = Culturedate; 
} 

    return strdate; 

Это то, что я сделал, чтобы заставить его работать, но если пользователь выбирает неверная дата, как 29/02/2013 будет работать не уверены,

CultureInfo currentCulture = new CultureInfo("en-GB"); 
string date = DateTime.Now.ToString("dd/MM/yyyy", currentCulture); 

Поскольку приложения по умолчанию ан-ГБ

if (DateTime.Parse(input) > DateTime.Parse(date)) 
{ 
    return false; 
} 
else 
{ 
    return true; 
} 
+1

Без предоставления определения для 'CheckConvertCulture' вы не получите хороший ответ. – spender

+0

Что такое 'strCheckDate' и' CheckConvertCulture'? –

+0

strCheckDate - это всего лишь дата из раскрывающегося списка, нужно выяснить, как отредактировать мой код и поместить CheckConvertCulture :) – Adrian

ответ

0

Если это на самом деле ваш код:

CultureInfo currentCulture = new CultureInfo("en-US"); 
string strCheckDate = CheckConvertCulture(input); 

if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null) 

, то проблема в вашем ParseExact, что переводится

if (DateTime.ParseExact(strCheckDate, "en-US", null)) 

Вы бы сделали ставку тер от указания даты в определенном формате, и синтаксический анализ, что:

string format = "MM/dd/yyyy HH:mm:ss"; 
string strCheckDate = input.ToString(format); 

// See note below about "why are you doing this?  
if (DateTime.ParseExact(strCheckDate, format)) 

Мой большой вопрос - почему вы это делаете? Если у вас две даты, почему вы конвертируете их как в строки, а затем преобразуете их обратно в даты, чтобы сравнить их?

return (input > date); 

Пожалуйста, смотрите MSDN documentation для надлежащего использования DateTime.ParseExact.

+0

У меня есть поле со списком, чтобы пользователь выбирал дату так, чтобы она была в формате строки затем я получаю текущую дату и проверяю ее с датой пользователя после ее преобразования в текущую культуру, которая является en-GB, но я сохраняю ее в en-US – Adrian

+0

. Это нормально, но нет причин для преобразования текущей даты в строку и затем вернуться к дате. Не делайте вещи более сложными, чем они должны быть. –

+0

Как я могу проверить строку на формат даты, если я ее не конвертирую? – Adrian

Смежные вопросы