2011-07-28 3 views

ответ

9

Даты сами не имеют форматы по своей сути. Вы можете разобрать строку в DateTime путем анализа его с форматом dd/MM/yyyy, а затем преобразовать его в строку, используя yyyyMMdd формат:

DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy", 
            CultureInfo.InvariantCulture); 

string reformatted = date.ToString("yyyyMMdd", CultureInfo.InvariantCulture); 

Или в VB:

Dim date as DateTime = DateTime.ParseExact(text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
Dim reformatted as String = date.ToString("yyyyMMdd", CultureInfo.InvariantCulture) 

(И убедитесь, что у вас есть импорт для System.Globalization.)

Однако в идеале вы должны хранить его как DateTime (или аналогичный) как можно дольше.

+0

Jon, Просто интересно об этом. Почему он не может использовать метод String.Format? – reggie

+1

@reggie: Для второй линии? Он мог бы, но это было бы больше работы ИМО. Зачем задавать спецификатор форматирования составной строки, когда вы хотите только форматировать одно значение? –

+0

Спасибо за подсказку, вторая строка - это то, что я пропустил! –

0

Используйте метод DateTime.ParseExact, чтобы разобрать дату, затем используйте DateTimeObj.ToString("yyyyMMdd").

DaTeTime.ParseExact

3
CDate(Datetext).ToString("yyyyMMdd") 
+0

Этот ответ может потерпеть неудачу в зависимости от культуры. Вот почему ответ Джона лучше, чем этот. Например, как решить, будет ли 10/12/2017 10 декабря или 12 октября без ParseExact? – Nizam