Почему String.Format преобразовывает косую черту в знак минус? - PullRequest
15 голосов
/ 09 августа 2011

Почему String.Format("/") конвертируется в "-"?

Ответы [ 4 ]

23 голосов
/ 09 августа 2011

Я подозреваю, что вы используете символ / внутри заполнителя {0}. Это зарезервированный символ, используемый в качестве разделителя даты и времени в данной культуре. Вы можете избежать этого, как это:

string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now);
13 голосов
/ 09 августа 2011

Согласно Пользовательские строки формата даты и времени , / относится к разделителю даты культуры. Так что вам нужно избежать этого. Вы можете использовать обратную косую черту в соответствии с ответом Дарина, или можете заключить ее в одинарные кавычки. Например:

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));
    }
}
6 голосов
/ 09 августа 2011

Я пробовал это со всеми возможными культурами:

foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) {
  Console.Write(String.Format(info, "/"));
}

Выход:

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////

Итак, этого нигде не происходит.

1 голос
/ 09 августа 2011

Похоже, ваш разделитель даты в вашей культуре - "-" вместо "/". см msdn и эту статью

Edit:

Вы проверили свой регион и языковые настройки, чтобы убедиться, что у вас не выбрана опция, в которой используется "-".

enter image description here

...