2016-03-23 9 views
12

die Situation in der ich bin folgt:Verwendung Formatstring aus einer Eigenschaft

Ich habe eine interpolierte Zeichenfolge wie folgt aussehen:

DateTime DateOfSmth; 
string PlaceOfSmth; 
$"{DateOfSmth}, {PlaceOfSmth}".Trim(' ',','); 

Und ein Format, das in auf sie verwendet werden soll:

string Format = "{0:dd.MM.yyyy}"; 

Nun möchte ich mag das Format in der Eigenschaft Format im Interpolations-String verwenden, aber ich weiß nicht, wie.

I.E: i so etwas wie dies möchte das Ergebnis sein:

$"{DateOfSmth:Format}, {PlaceOfSmth}".Trim(' ',','); 

Könnte jemand helfen?

+1

Sie dieses Console.WriteLine tun können ($ "Name = {name}, Stunden = {Stunden: hh}") für weitere Einzelheiten besuchen Sie bitte https://msdn.microsoft .com/de-us/library/dn961160.aspx – rashfmnb

+0

Danke für den Link. Ich habe es bereits studiert, bevor ich die Frage gestellt habe. Der wirkliche Grund, ich brauche es, wie ich sagte, ist, weil ich den Formatierungsstring von der 'Format' Eigenschaft verwenden muss.und schreibe es nicht direkt in die Zeichenfolge. – mishan

Antwort

14

Versuchen Sie folgendes:

string format = "dd.MM.yyyy"; 
Console.WriteLine($"{DateOfSmth.ToString(format)}"); 
+0

Am Ende habe ich etwas ähnliches benutzt. Da die Formatzeichenfolge den Inhalt '{0: dd.MM.yyyy}' hat, konnte ich Ihre Antwort nicht direkt verwenden, aber das hat mir sehr geholfen. Danke :) – mishan

+0

nur um cflarify - die Formatzeichenfolge ist gegeben und ich kann es nicht ändern. – mishan

2

bearbeiten: Das ist nicht die richtige Antwort auf die Frage, aber es wäre hilfreich, wenn Sie DateTime mit dem gewünschten Datum und Uhrzeit Formatierung formatiert werden sollen.

Wenn Sie versuchen, eine DateTime Art zu formatieren es viele Möglichkeiten, dies zu tun ist, und ich sehe, dass der beste Weg, String.Format Methode mit benutzerdefinierten Formatbezeich zu verwenden ist, die zu Datum und Uhrzeit (zum Beispiel y für das Jahr bezogen sind , M für den Monat und d für den Tag), als Sie diesen Wert in einer Variablen speichern und überall verwenden können.

Dies ist ein funktionierendes Beispiel:

DateTime currentDate = new DateTime(2015, 3, 23, 12, 40, 5, 112); 

String.Format("{0:y yy yyy yyyy}", currentDate); // result -> "15 15 015 2015" 
String.Format("{0:M MM MMM MMMM}", currentDate); // result -> "3 03 Mar March" 

Sie können auch Standardformatbezeich verwenden, zB:

t ist für "ShortTimePattern", die zur Folge haben wird (h: mm tt).

d ist für "ShortDatePattern" das Ergebnis (M/d/JJJJ).

T ist für "LongTimePattern" was ergibt (h: mm: ss tt).

ist für "LongDatePattern", die sich ergeben (dddd, MMMM dd, yyyy).

Dies ist ein funktionierendes Beispiel:

String.Format("{0:t}", currentDate); // result -> "12:40 PM" ShortTime 
String.Format("{0:d}", currentDate); // result -> "3/23/2015" ShortDate 
String.Format("{0:T}", currentDate); // result -> "12:40:05 PM" LongTime 
String.Format("{0:D}", currentDate); // result -> "Wednesday, March 23, 2015" LongDate 

Für die vollständige Referenz finden Sie in der MSDN-Seite here.

+0

Er möchte die Formatierung in einem interpolierten String mit einer Variablen 'format' erreichen. Dein Versuch beantwortet nicht, wonach er fragt, obwohl es nicht falsch ist. –

+0

@diiN_ das ist wahr, nachdem ich seine Kommentare gelesen habe, habe ich die Frage richtig verstanden, danke. – mohammadT3d

0

Am Ende habe ich die angenommene Antwort auf @diiN_. Die Lösung, die ich verwendet, ist:

//this format is given and I can't change it 
string Format = "{0:dd.MM.yyyy}"; 
DateTime? Date = DateTime.Today; 
string Place = "Washington"; 

string.Format(Format + ", {1}", Date, Place); 
Verwandte Themen