Pytanie Dlaczego String.Format przekształca ukośnik w znak minus?


Dlaczego String.Format("/") przekonwertować na "-"?


14
2017-08-09 16:09


pochodzenie


Społeczność Stack Overflow jest bezpłatna i zachęcani aby poprawiać pytania najlepiej jak potrafią. Jeśli nie podoba ci się to, Stack Overflow prawdopodobnie nie jest dla ciebie. Zobacz FAQ jak najwcześniej. - Tim Post♦


Odpowiedzi:


Podejrzewam, że używasz / symbol wewnątrz {0} symbol zastępczy. Jest zarezerwowanym symbolem używanym jako separator datetime w danej kulturze. Możesz uciec przed tym, jak to:

string date = string.Format("{0:dd\\/MM\\/yyyy}", DateTime.Now);

22
2017-08-09 16:10





Zgodnie z Niestandardowe ciągi formatu daty i godziny, / odnosi się do separatora dat kultury. Więc musisz uciec. Możesz użyć odwrotnego ukośnika według odpowiedzi Darina, lub możesz zacytować go w pojedynczym cudzysłowie. Na przykład:

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));
    }
}

13
2017-08-09 16:20





Próbowałem tego z wszystkimi możliwymi kulturami:

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

Wydajność:

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

Tak więc nigdzie się to nie zdarza.


6
2017-08-09 16:19



Haha, kochaj wydajność - SwDevMan81


Wygląda na to, że twój separator dat w twojej kulturze to "-" zamiast "/". widzieć msdn i to artykuł

Edytować:

Czy sprawdziłeś swój region i ustawienia językowe, aby upewnić się, że nie masz wybranej opcji, która używa "-".

enter image description here


1
2017-08-09 16:15



Mój krótki format daty to yyyy-MM-dd, ale String.Format("/") wciąż wraca "/". - Guffa
@Guffa - Ciekawe ... Wygląda na to, że szczekałem złe drzewo - Mark Hall