2015-07-29 29 views
7

Od msdn wydaje się, że mogę utworzyć własny format za pomocą metodyitp. Ale kiedy wypróbowałem jeden, to nie działało zgodnie z oczekiwaniami, snipped poniżej jest problem .Datetime.ToString() C# nie działa zgodnie z oczekiwaniami

enter image description here

Spodziewałem 7/29/2015 ale otrzymał 7-29-2015 !!! czemu?

+2

Bo [ '/' jest separator data skonfigurowana w systemie] (https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#dateSeparator). Użyj ""/"" do dosłownego ukośnika. –

+0

@Adil Różnica to "-" i "/" –

+0

możliwy duplikat [Jak sformatować datę z ukośnikami w C#] (http://stackoverflow.com/questions/3684033/how-to-format-a-date -z-ukośnikami-w-c-ostrych) – Dzyann

Odpowiedz

19

Wygląda na to, że Twój DateSeparator Twojego CurrentCulture jest - i dlatego też zastępuje go sam znak /.

"/" custom format specifier ma specjalne znaczenie jako zastąp mnie aktualną kulturą lub dostarczonym separatorem dat kultury.

masz kilka opcji, to albo uciec z apostrofami (lub \/ w verbatim ciąg dosłownym) lub wykorzystać kulturę, która ma / postaci DateSeparator jak InvariantCulture.

string s = DateTime.Now.ToString("M'/'d'/'yyyy"); 
string s = DateTime.Now.ToString(@"M\/d\/yyyy"); 
string s = DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture); 
+0

ohhhkkkk ... dzięki, kumplu .. przyjmie, kiedy pozwoli wkrótce .. :) – yogi

+0

@yogi Nie. Możesz się bawić. '/' W twoim ciągu oznacza "użyj separatora daty danego dostawcy formatu". Jednak '/ '' lub '\ /' oznacza "zawierają dosłowny ukośnik". Więc albo '" M "/" d "/" rrrr "' lub '@" M \/d \/rrrr "' będzie w porządku. –

Powiązane problemy