我试图在C#函数中格式化DateTime,但我无法让它工作。
我试图获得的格式是这样的:
"28/02/2012"
我尝试过不同的格式化DateTime的方法,例如:
string formattedDate = DateTime.Today.ToString("dd/MM/yyyy");
string formattedDate = String.Format("{0:dd/MM/yyyy}", DateTime.Today);
这两个例子都给了我这个结果:
"28.02.2012"
在使用上面显示的两种方式之前,我已经多次格式化了DateTimes,但我真的不明白为什么我会得到"。"而不是" /"。
是否需要设置某些配置?
答案 0 :(得分:10)
phoog给出了正确的理由,但我建议错误的解决方法。如果您总是希望将日期/时间格式化为特定文化(可能是不变文化),那么您可以这样做:
string formattedDate = DateTime.Today.ToString("dd/MM/yyyy",
CultureInfo.InvariantCulture);
我认为这比将格式的某些部分强制转换为不变形式更清晰,同时将其他(数字)留给文化。例如,考虑一下:
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);
}
}
今天,打印“06/04/1433” - 适用于伊斯兰日历,但可能不是你所期望的。
答案 1 :(得分:6)
日期时间格式字符串中的/
字符是文化特定日期分隔符的占位符。要明确指定/
字符,您需要转义它:"dd\\/MM\\/yyyy"
或@"dd\/MM\/yyyy"
有关详细信息,请参阅the MSDN page "Custom Date and Time Format Strings"
答案 2 :(得分:0)
我是这样做的:
string formattedDate = (String.Format("{0:dd.MM.yyyy}", DateTime.Today)).Replace(".", @"/");