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

JL.*_*JL. 3 c# datetime

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

  04.09.2009 (dd.mm.yyyy)
Run Code Online (Sandbox Code Playgroud)

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

  2009/08/31 (yyyy/mm/dd)
Run Code Online (Sandbox Code Playgroud)

记住输出应该是一个字符串值,输入日期是一个字符串.

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

Jon*_*eet 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);
}
Run Code Online (Sandbox Code Playgroud)

(您可以指定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));
    }
}
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 6

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

要转换字符串,请将其解析为DateTime值,即字符串格式:

string newFormat = DateTime.ParseExact(theDate, "dd'.'MM'.'yyyy", CultureInfo.InvariantCulture).ToString("yyyy'/'MM'/'dd")
Run Code Online (Sandbox Code Playgroud)

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