2010-12-01 4 views
0

Я отправляю строку в формате dd/MM/yyyy, которая затем анализируется в культуре lv-LV, как установлено в настройке глобализации web.config.DateTime.Parse, настройки латышской культуры

Я сравниваю дату с DateTime.Now, чтобы узнать, есть ли в прошлом.

Проблема заключается в том, что DateTime.Parse преобразует мою строку в формат dd.MM.yyyy, но DateTime.Now имеет формат MM.dd.yyyy, поэтому сравнение всегда терпит неудачу.

Зачем DateTime.Now быть отличным от результата от DateTime.Parse, на той же теме культуры?

Спасибо!

(обновление) Это код, я использую:

InputText содержит входные данные из формы в формате ДД.ММ.ГГГГ

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

[DateTime.Now] в этом контексте находится в ММ .DD.YYYY формат с использованием LV-LV CultureInfo [дата] в формате ДД.ММ.ГГГГ после DateTime.Parse

+0

Я думаю, вам нужно показать нам более полный код; `DateTime` (например,` .Now` или результат `.Parse`) не имеет * собственного * формата - ddmm versus mmdd является свойством * строковых представлений *, а не` DateTime `значения сами. – AakashM 2010-12-01 15:57:21

ответ

2

DateTime не имеет форматирование - это просто точка во времени.

Если вы его просмотрите, это значит, что вы его выводите. Используйте правильную культуру для вывода даты.

DateTime.ToString имеет перегрузки, которые берут поставщик формата, такие как CultureInfo:

string formatted = DateTime.ToString(new CultureInfo("lv-LV")); 

Если не указано (в коде или конфигурации), будет использоваться в системе по умолчанию культуры (или CultureInfo.InvariantCulture, в некоторых случаях).

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 
} 

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

  • Нет связанных вопросов^_^