C#格式化DateTime给我错误的结果

bal*_*le3 3 c# string format datetime

我正在尝试在C#函数中格式化DateTime,但我无法使其工作.

我想要的格式是这样的:

"28/02/2012"
Run Code Online (Sandbox Code Playgroud)

我尝试过不同的格式化DateTime的方法,例如:

string formattedDate = DateTime.Today.ToString("dd/MM/yyyy");

string formattedDate = String.Format("{0:dd/MM/yyyy}", DateTime.Today);
Run Code Online (Sandbox Code Playgroud)

这两个例子都给了我这个结果:

"28.02.2012"
Run Code Online (Sandbox Code Playgroud)

在使用上面显示的两种方式之前,我已经多次格式化DateTimes,但我真的不明白为什么我会"." 代替 "/".

是否有一些必须设置的配置?

Jon*_*eet 11

phoog给出了正确的理由,但我建议错误的解决方法.如果您总是希望将日期/时间格式化为您在特定文化中的格式(可能是不变文化),那么您可以这样做:

string formattedDate = DateTime.Today.ToString("dd/MM/yyyy", 
                                               CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

我觉得这比将格式的某些部分强制成不变形式更清晰,同时将其他部分(数字)留给文化.例如,考虑一下:

using System;
using System.Globalization;
using System.Threading;

class Test
{
    static void Main()
    {
        CultureInfo ci = new CultureInfo("ar-SA");
        Thread.CurrentThread.CurrentCulture = ci;
        string formattedDate = DateTime.Today.ToString("dd/MM/yyyy");
        Console.WriteLine(formattedDate);
    }
}
Run Code Online (Sandbox Code Playgroud)

今天,打印"06/04/1433" - 适合伊斯兰历法,但可能不是你所期望的.


pho*_*oog 6

/在日期时间格式字符串的字符是为特定的文化日期分隔符的占位符. 要明确指定/字符,您需要转义它:"dd\\/MM\\/yyyy"@"dd\/MM\/yyyy"

有关详细信息,请参阅MSDN页面"自定义日期和时间格式字符串"