2015-03-16 2 views
0

У меня есть строка, содержащая дату в некотором формате X (например, 12/31/2015). Как преобразовать его в формат Y (например, 2015-12-31 00:00:00)?Как преобразовать строку даты из формата X в формат Y?

+0

Примечание: Это должно быть канонический вопрос, иметь один, один размер подходит всем дублировать для всех * Как Я конвертирую свою дату из формата ... в формат ...? * Вопросов. Не стесняйтесь добавлять лучшие ответы или улучшать мои. – Heinzi

+0

Возможный дубликат [Как преобразовать дату из формата yyyyMMdd в формат mm-dd-yyyy] (http://stackoverflow.com/questions/4712335/how-to-convert-date-from-yyyymmdd-format-to-mm -dd-yyyy-format) –

+0

Кажется, что уже есть подходящий «канонический» вопрос. Пожалуйста, объясните, почему нужно создать совершенно новый вопрос, а не просто очистить (если потребуется) другой. –

ответ

3

C# имеет свои собственные DateTime structure. Цель состоит в том, чтобы

  1. преобразовать строку в DateTime и затем
  2. конвертировать DateTime обратно в строку.

Во-первых, вам нужно получить строку формата для обоих форматов X и Y. Проверьте следующие два списка:

Например, для 12/31/2015 все d или MM/dd/yyyy (с en-US или инвариантной культурой) или MM\/dd\/yyyy (с любым языковым стандартом). Для 2015-12-31 00:00:00 это будет yyyy-MM-dd HH:mm:ss.


Для первого шага, вы можете использовать DateTime.ParseExact (или DateTime.TryParseExact, если вы хотите, чтобы терпеть неудачу изящно, если строка не имеет правильный формат), например,

var myDateTime = DateTime.ParseExact(myInputString, "MM/dd/yyyy", 
            CultureInfo.InvariantCulture); 

Для второй этап, использование DateTime.ToString:

var myOutputString = myDateTime.ToString("yyyy-MM-dd HH:mm:ss", 
             CultureInfo.InvariantCulture); 
1

Простая функция bas ред на Heinzi рекомендуется метод:

public string ConvertDateFormat(string input, string inputFormat, string outputFormat) 
{  
     return DateTime.ParseExact(input, inputFormat, CultureInfo.InvariantCulture) 
         .ToString(outputFormat,CultureInfo.InvariantCulture); 
} 

Рабочий пример: https://dotnetfiddle.net/gQ11qs

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