为什么String.Format("/")
会转换为“ - ”?
答案 0 :(得分:23)
我怀疑您在/
占位符中使用了{0}
符号。它是在给定文化中用作日期时间分隔符的保留符号。你可以逃避它,就像这样:
string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now);
答案 1 :(得分:13)
根据Custom Date and Time Format Strings,/
指的是文化的日期分隔符。所以你需要逃避它。您可以根据Darin的答案使用反斜杠,也可以用单引号引用它。例如:
using System;
using System.Globalization;
class Test
{
static void Main()
{
DateTime date = DateTime.Now;
CultureInfo da = new CultureInfo("da");
// Prints 09-08-2011
Console.WriteLine(string.Format(da, "{0:dd/MM/yyyy}", date));
// Prints 09/08/2011
Console.WriteLine(string.Format(da, "{0:dd'/'MM'/'yyyy}", date));
// Prints 09/08/2011
Console.WriteLine(string.Format(da, "{0:dd\\/MM\\/yyyy}", date));
}
}
答案 2 :(得分:6)
我尝试了所有可能的文化:
foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) {
Console.Write(String.Format(info, "/"));
}
输出:
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////
所以,这不会发生在任何地方。
答案 3 :(得分:1)