Почему String.Format конвертирует косую черту в знак минуса?
Почему String.Format("/")
преобразуется в "-"?
Ответы
Ответ 1
Я подозреваю, что вы используете символ /
внутри заставки {0}
. Это зарезервированный символ, используемый в качестве разделителя даты и времени в данной культуре. Вы можете избежать этого, например:
string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now);
Ответ 2
По Пользовательские строки формата даты и времени, /
относится к разделителю дат культуры. Поэтому вам нужно избежать этого. Вы можете использовать обратную косую черту в соответствии с ответом Дарина, или вы можете процитировать ее в одинарных кавычках. Например:
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));
}
}
Ответ 3
Я пробовал это со всеми возможными культурами:
foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) {
Console.Write(String.Format(info, "/"));
}
Вывод:
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////
Итак, этого не происходит нигде.
Ответ 4
Похоже, что в вашей культуре ваш селектор даты "-" вместо "/". см. msdn и статья
Edit:
Вы проверили настройки своего региона и языка, чтобы убедиться, что у вас нет выбора, который использует "-".
![enter image description here]()