2015-01-10 2 views
0

у меня есть дата в строке с этим форматом "2/11/2013 19:14:00" (MM/DD/YYYY HH: MM: SS) формате, и я хочу, чтобы преобразовать его в строку формата, как этот 11 February 2013 19:14Обменявшись форматы даты в строках

Как я могу сделать это наиболее эффективным способом?

+2

Как примечание стороны, нет 'DD',' 'YYYY' и SS' спецификаторов. Все пользовательские спецификаторы чувствительны к регистру. И 'ММ' в течение нескольких месяцев,' мм' составляет несколько минут. Чтение: [Пользовательские строки формата даты и времени] (http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx) –

ответ

6

Если ваше значение 2/11/2013 19:14:00 является DateTime, просто отформатируйте DateTime с помощью .ToString() method;

dateTimeValue.ToString("dd MMMM yyyy HH:mm", CultureInfo.InvariantCulture); 

Если значение 2/11/2013 19:14:00 является string, не DateTime, вы можете разобрать его DateTime первый, а затем вы можете отформатировать его, как;

string s = "2/11/2013 19:14:00"; 
DateTime dt; 
if(DateTime.TryParseExact(s, "M/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture, 
          DateTimeStyles.None, 
          out dt)) 
{ 
    Console.WriteLine(dt.ToString("dd MMMM yyyy HH:mm", 
           CultureInfo.InvariantCulture)); 
} 

Здесь в demonstration.

+2

... после того, как вы преобразовали текущую строку (с DateTime.Parse или DateTime.TryParse) до типа DateTime. –

+1

Ответ на этот вопрос? ? –

+0

@JoonasKoski Не было ясно, поэтому я написал оба пути. –

1

Сначала конвертировать ваши string к DateTime:

затем преобразовать этот DateTime к string:

string newString = dt.ToString("dd MMMM yyyy HH:mm", 
    CultureInfo.InvariantCulture); 
+1

Вы не можете разобрать '2' с помощью спецификатора' MM'. Вместо этого он должен быть «М». Также поставляйте 'IFormatProvider', который'/'как' DateSeparator', например 'InvariantCulture', предотвращает ошибку синтаксического анализа. –

+0

спасибо, я отредактировал мой ответ – DrKoch

0

Если дата ввода фактически string, проще всего сделать, это конвертировать до DateTime:

DateTime d = DateTime.ParseExact(oldDateString, "M/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

Затем преобразовать его обратно в string, а Soner уже предложил:

string newDateString = d.ToString("dd MMMM yyyy HH:mm", CultureInfo.InvariantCulture); 
Смежные вопросы