2013-03-30 12 views

Antwort

29

Sie können Literalzeichenfolgen mit Anführungszeichen, die für längere Strings ist wahrscheinlich einfacher, und ein bisschen besser lesbar als jedes Zeichen mit einem Backslash:

str = String.Format("{0:MMM d 'at' m:mm"+yearStr+"}", dt); 

Siehe Custom Date and Time Format Strings in MSDN Library (Suche nach „Zeichenkette Trennzeichen ").

(Und du hast meine h:mm statt m:mm?)

+0

Diese Lösung funktioniert am besten für mich, die anderen Antworten, hat mich nicht mehrere Blöcke von {} verwenden lassen .. – Baconbeastnz

+0

(Oder vielleicht sogar 'H: mm' mit Kapital 'H') –

+0

@JeppeStigNielsen: Guter Punkt. –

9
string.Format(@"{0:MMM d \a\t m:mm" + yearStr + "}", dt); 

Notiere die Doppel Entkommen - habe ich eine varbatim Saite so ich in der Lage war \ innerhalb der Zeichenfolge als normales Zeichen zu schreiben. Die Formatierroutine für DateTime interpretiert dies dann (wieder) als Escape-Sequenz.

Hier ist eine einfachere Variante:

string.Format("{0:MMM d} at {0:m:mm" + yearStr + "}", dt); 

Die erste Variante könnte widerlich betrachtet werden einige durch. Letzteres ist jedoch sehr deutlich zu lesen.

+0

+1 I mit 'String str = String.Format ("{0: MMM} auf {1: dm: mm" + yearStr + "}", dt, dt) zu beantworten versuchte,', aber ich denke, Ihr ist besser. – Steve

+0

warum '\' vor einem verwenden. Ich denke, ein \ t – Kashif

+1

@MuhammadKashifNadeem arbeiten wird es funktionieren könnte, aber ich interessiere mich nicht. Ich möchte sicher sein, dass es korrekt ist und ich möchte, dass es konsistent ist. – usr

2

Just for fun, aber funktioniert.

var what=new object[] { "{{{{0:MMM d}}}} {0} {{{{0:m:mm:{{0}}}}}}", "at", yearStr, dt }; 
var that=what.Aggregate((a, b) => String.Format((String)a, b)); 

Sie können zwei Zeilen in einem zusammenführen. Die at, die Sie zwischen zwei Formaten setzen möchten, ist ebenfalls parametrisiert.

Verwandte Themen