C# 如何在不使用代码格式字符串的情况下格式化日期

C# 如何在不使用代码格式字符串的情况下格式化日期,c#,datetime,formatting,C#,Datetime,Formatting,如何使用格式字符串实现以下目标:Do 01.01.2009? 它必须使用所有语言(德国就是一个例子)。因此,应该只有短的工作日,然后是短的日期 我试了“ddd”(不带“ddd”)。但是,这会导致“Do 01”。 有没有可能我可以在“d”前面加上一个字符,这样它就可以独立行走了?如果你的目标受众是不同的口语,你应该使用标准 DateTime.Now.ToString("ddd dd/MM/yyyy") DateTime.Now.ToString("ddd yyyy-MM-dd"); 或者,您可

如何使用格式字符串实现以下目标:Do 01.01.2009? 它必须使用所有语言(德国就是一个例子)。因此,应该只有短的工作日,然后是短的日期

我试了“ddd”(不带“ddd”)。但是,这会导致“Do 01”。 有没有可能我可以在“d”前面加上一个字符,这样它就可以独立行走了?如果你的目标受众是不同的口语,你应该使用标准

DateTime.Now.ToString("ddd dd/MM/yyyy")
DateTime.Now.ToString("ddd yyyy-MM-dd");
或者,您可以在短时间内以当前文化为目标:

DateTime.Now.ToString("d", Thread.CurrentThread.CurrentCulture);
或者是一个漫长的约会:

DateTime.Now.ToString("D", Thread.CurrentThread.CurrentCulture);

要获取特定于区域设置的短日期以及区域设置的日期名称,则必须使用两个调用,因此:

 myDate.ToString("ddd ") + myDate.ToString("d");
您考虑过改用长日期格式吗?

如果您想本地化(我想是这样,因为您说的是“所有语言”),您可以使用CultureInfo设置要显示的不同区域性。MSDN库包含有关和的信息

MSDN示例提供了:

// Display using pt-BR culture's short date format
DateTime thisDate = new DateTime(2008, 3, 15);
CultureInfo culture = new CultureInfo("pt-BR");      
Console.WriteLine(thisDate.ToString("d", culture));  // Displays 15/3/2008

仅供参考,在Java中如下所示:

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);

如果要确保使用相同的字符作为分隔符,则必须使用反斜杠转义字符,否则它将默认为您所在的区域设置。如果希望使用问题中指定的格式,我建议使用此字符串

DateTime.Now.ToString("ddd dd.MM.yyyy");
要改为使用正向斜杠,应将其转义,以便它们始终作为斜杠输出

DateTime.Now.ToString("ddd dd\\/MM\\/yyyy");

如果您只能使用一种格式,那么ISO8601是好的。不过,更好的方法是使格式适应客户的首选符号。