C # Лучший способ конвертировать строковый формат даты в другую строку? - PullRequest
3 голосов
/ 17 сентября 2009

Следующая дата хранится в виде строки

  04.09.2009 (dd.mm.yyyy)

Теперь я хотел бы изменить его на этот формат:

  2009/08/31 (yyyy/mm/dd)

Помните, что вывод должен быть строковым значением, а дата ввода - строкой.

Как лучше всего конвертировать его с минимальными усилиями?

Ответы [ 4 ]

9 голосов
/ 17 сентября 2009

Что-то вроде:

public static string ConvertDateTimeFormat(string input, string inputFormat,
    string outputFormat, IFormatProvider culture)
{
    DateTime dateTime = DateTime.ParseExact(input, inputFormat, culture);
    return dateTime.ToString(outputFormat, culture);
}

(Вы можете указать null, чтобы культура использовала культуру текущего потока.)

Тестовый код:

using System;

class Test
{
    public static string ConvertDateTimeFormat(string input, string inputFormat,
        string outputFormat, IFormatProvider culture)
    {
        DateTime dateTime = DateTime.ParseExact(input, inputFormat, culture);
        return dateTime.ToString(outputFormat, culture);
    }

    static void Main()
    {
        Console.WriteLine(ConvertDateTimeFormat("04.09.2009", "dd'.'MM'.'yyyy",
                                                "yyyy'/'MM'/'dd", null));
    }
}
5 голосов
/ 17 сентября 2009

Почему вы храните дату в виде строки? Это вообще плохая идея ...

Чтобы преобразовать строку, которую вы анализируете, в значение DateTime, формат которого в строку:

string newFormat = DateTime.ParseExact(theDate, "dd'.'MM'.'yyyy", CultureInfo.InvariantCulture).ToString("yyyy'/'MM'/'dd")

(Обратите внимание, что для получения буквенного символа вам понадобятся апострофы вокруг косой черты, в противном случае в культуре будет использоваться символ разделения даты, который может быть другим символом.)

3 голосов
/ 17 сентября 2009
DateTime dateTime = DateTime.ParseExact("04.09.2009", "dd.MM.yy", null);
dateTime.ToString("yyyy/MM/dd");
1 голос
/ 17 сентября 2009

Если ваши входные и выходные данные являются строками, вы вообще не имеете дело с датами Вы можете просто использовать строковые манипуляции для выполнения преобразования:

string original = "04.09.2009";
string converted = original.Substring(6, 4) + "/" +
                   original.Substring(3, 2) + "/" +
                   original.Substring(0, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...