2014-09-26 3 views
0

У меня есть строка strdate = «25/9/2014» здесь дд/мм/гггг format.I хочет разобрать его во время, как даты нижеСтрока DATETIME в C#

DateTime dt; 
      if (DateTime.TryParseExact(strDate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt)) 
      { 
       dt = DateTime.Parse(strDate); 
      } 

      Console.WriteLine(dt); 

Но это может не разбирайте. Пожалуйста, помогите мне.

+5

Почему вы разбираете вашу строку дважды? –

+0

, если try parse возвращает true - у вас уже есть dt, и вам не нужно снова анализировать;) – Reniuz

+2

Вам нужно использовать формат '' dd/M/yyyy'' ... – petelids

ответ

2

TryParseExact необходимо точно соответствовать.

В вашем случае попробуйте dd/M/yyyy, как ваш вклад

25/9/2014 
dd/M/yyyy 
9

две вещи:

1: Ваш формат строки должен быть "dd/M/yyyy" (двойной ММ потребует два месяца цифры, один M позволит 1 или 2 месяца).

2: Вы разбираете строку даты дважды.

Изменить код:

DateTime dt; 

if (DateTime.TryParseExact(strDate, "dd/M/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt)) 
{ 
    Console.WriteLine(dt.ToString("dd/M/yyyy")); 
} 
else 
{ 
    Console.WriteLine("Can't parse it."); 
} 

[EDIT] Изменена Console.WriteLine(), так что он выдает в определенном формате "дд/M/YYYY", а не с использованием локальной системной локали.

+0

Спасибо, я пробовал свой код. Он дает мне 9/25/2014. Но вот в моей строке 25 день, 9 - месяц. – Joydip

+1

@Joydip Это просто потому, что 'Console.WriteLine (dt.ToString());' (подразумевается .ToString()) по умолчанию соответствует формату «мм/дд/гггг». Если вы измените его на 'Console.WriteLine (dt.ToString (" dd/M/yyyy ")),' он должен отображаться так, как вы ожидаете. –

+3

@WyattEarp Console.WriteLine (dt.ToString()); не совсем «дефолт» на «мм/дд/гггг» - результат зависит от вашего CurrentCulture (в данном случае это похоже на en-US) – Arie

0

Изменение "dd/MM/yyyy" в "dd/M/yyyy"

потому

TryParseExact ищет Exact Match