2010-09-27 8 views
5

Mam zmienną DateTime i chcę ją przekonwertować na ciąg "DD.MM.RRRR" Należy pamiętać, że wartości muszą być oddzielone znakiem "kropka".DateTime: jak wyświetlać jako DD.MM.RRRR?

Oczywiście mogę wykonać ręczną kompozycję napisów. Ale zastanawiam się, czy mogę użyć DateTime.ToString() , aby wykonać wymaganą konwersję.

Odpowiedz

13

Tak można:

string formatted = dt.ToString("dd'.'MM'.'yyyy"); 

Teraz w tym przypadku cytaty nie są rzeczywiście potrzebne, jak custom date/time format strings nie interpretują kropkę w każdym szczególny sposób. Chciałbym jednak, aby było to wyraźne - jeśli zmieni się "." dla ":" na przykład, gdy jest cytowany, pozostanie z wyraźną postacią, ale bez cudzysłowu będzie to "specyficzny dla kultury separator czasu". Nie było dla mnie oczywiste, czy "." byłby interpretowany jako "separator dziesiętny specyficzny dla kultury", a więc cytowanie. Możesz oczywiście poczuć, że to koniec - to twoja decyzja.

Ty może też chcesz określić kultury niezmienny, tak aby usunąć wszelkie inne ślady zwątpienia: „”.

string formatted = dt.ToString("dd'.'MM'.'yyyy", CultureInfo.InvariantCulture); 

(W tym momencie cytaty wokół kropki stają się mniej istotne, podobnie jak separator dziesiętny w kulturze niezmiennego tak)

+0

+1: Dzięki za szczegółowe informacje dotyczące cytatów, wszelkie ich znaczenie w tym przypadku. –

8

Tak, można użyć DateTime.ToString tak:

myDateVariable.ToString("dd.MM.yyyy"); 

Zauważ, że musisz użyć kapitału MM tutaj, ponieważ ocenia mm do kilku minut, zamiast miesięcy.

2

można sformatować datę takiego:.

date.ToString("dd.MM.yyyy") 

When formatt Numery ing, okres . zmieni się w zależności od użytego CultureInfo, ale nie podczas formatowania dat.

Jeśli weryfikacji kodu przed reguły analizy kodu CA1304: Specify CultureInfo trzeba będzie użyć kultury niezmienny, mimo to nie ma znaczenia dla tego konkretnego formatu:

date.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture) 
3

Oto alternatywa dla Ciebie:

DateTime.Now.ToString("d", new CultureInfo("de-DE")) 

Używanie języka niemieckiego . jako separatora daty.

+1

Czy naprawdę chcesz, aby wszyscy, którzy czytają kod, muszą o tym wiedzieć? Czy nie łatwiej to przeliterować? –

+0

Sądzę też, że można zastąpić dowolną kulturę własnymi ustawieniami, więc nie jest to gwarantowane zachowanie. –

+0

zwróć uwagę na słowo ** alternatywa **, dzięki za te heads up –

Powiązane problemy