C#将字符串日期格式转换为另一个字符串的最佳方法?

时间:2009-09-17 10:46:16

标签: c# datetime

我将以下日期存储为字符串

  04.09.2009 (dd.mm.yyyy)

现在我希望它改为这种格式:

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

记住输出应该是字符串值,输入日期是字符串。

以最小的努力转换它的最佳方法是什么?

4 个答案:

答案 0 :(得分:9)

类似的东西:

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));
    }
}

答案 1 :(得分:5)

为什么要将日期存储为字符串?这通常是一个坏主意......

要将您解析的字符串转换为DateTime值,即格式化为字符串的格式:

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

(请注意,您需要在斜杠周围使用撇号来获取文字字符,否则它将使用文化的日期分隔符,这可能是不同的字符。)

答案 2 :(得分:3)

DateTime dateTime = DateTime.ParseExact("04.09.2009", "dd.MM.yy", null);
dateTime.ToString("yyyy/MM/dd");

答案 3 :(得分:1)

如果您的输入和输出都是字符串,那么您根本就没有真正处理日期。您可以使用字符串操作来执行转换:

string original = "04.09.2009";
string converted = original.Substring(6, 4) + "/" +
                   original.Substring(3, 2) + "/" +
                   original.Substring(0, 2);