2016-12-01 10 views
4

Я хочу преобразовать строку формата даты в строку с другим форматом.Преобразование строки формата даты в строку другого формата даты

Строка DateOfBirth может быть в различных форматах, таких как:

  • 01/15/2017
  • 01-15-2017
  • 1.15.2017
  • 1.5.2017

Я хочу преобразовать его в другой шаблон, который я получаю в качестве параметра.

public string ConvertStringDateFormat(string date, string convertToDateFormat) 
{ 
} 

Предположим, что дата = "01/15/2017" и convertToDateFormat = "YYYY/MM/DD". Как я могу изменить его на новый формат?

Проблема для меня заключалась в том, чтобы сделать ее общей, чтобы она принимала любые параметры.

Я думал, что могу конвертировать дату в DateTime, а затем использовать ToString с форматом, но можете ли вы предложить лучшую идею?

+1

Преобразование в DateTime и с использованием культуры, будет быть проще всего, если вы хотите альтернативу, вы также можете использовать серию регулярных выражений для соответствия входному и выходному это на части для вашего вывода. –

+0

Поиск по языковым настройкам https://msdn.microsoft.com/en-us/library/5hh873ya(v=vs.90).aspx – RvdK

+0

'DateTime.ParseExact' имеет перегрузку, которая принимает несколько форматов. – juharr

ответ

1

попробовать это

public string ConvertStringDateFormat(string date, string convertToDateFormat) 
{ 
    return Convert.ToString(Convert.ToDateTime(date),convertToDateFormat); 
} 
2

я думаю, что это будет работать:

(Convert.ToDateTime(date)).ToString(convertToDateFormat) 
4

Анализировать к DateTime, а затем обратно в String:

public string ConvertStringDateFormat(string date, string convertToDateFormat) { 
    return DateTime 
    .ParseExact(date, 
     new string[] { "M/d/yyyy", "M-d-yyyy", "M.d.yyyy" }, 
     CultureInfo.InvariantCulture, 
     DateTimeStyles.AssumeLocal) 
    .ToString(convertToDateFormat); // convertToDateFormat = @"yyyy\/MM\/dd" for YYYY/MM/DD 
} 
+0

Является ли ваш окончательный формат 'ToString' правильным, поскольку вы используете' @ 'и' \/'? – TheLethalCoder

+0

@TheLethalCoder: '\' * escapes * '/' символ в качестве разделителя –

+0

На самом деле это должно быть 'ToString (convertToDateFormat)' – juharr

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