2016-08-03 40 views
3

Hier ist der Code:.NET System.Windows.Forms Datetimepicker Custom falsch

DateTime dt = new DateTime(2016, 8, 3); 
    dtpStart.Format = DateTimePickerFormat.Custom; 
    dtpStart.CustomFormat = "Mdyyyy"; //format; 
    dtpStart.Value = dt; 
    string s = String.Format("{0:Mdyyyy}", dt); 
    System.Console.Write(s); 

Im Datetime (dtpStart) I "8 32016" finden, die den Monat und den Tag hat jeder links gepolstert mit einem Leerzeichen, während der Konsolenausgang den erwarteten Wert "832016" zeigt.

Das Problem ist, dass wir diese unerwartete Polsterung des Monats und Tages sind zu sehen, und zwar unabhängig von dem Format, das wir liefern, zB:

Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern

+1

Randbemerkung: Es ist wahrscheinlich schlechte Auswahl von Datum Zeitformat als „Mdyyyy“ ... „1112016“. –

+0

nach Ihrem benutzerdefinierten Format ** "8 32016" **, verwenden Sie diese 'string s = String.Format (" {0: M dyyyy} ", dt);'. Stellen Sie sicher, dass Sie den Speicherplatz nach Bedarf hinzufügen. –

Antwort

3

Die DateTimePicker Steuerung versucht, hilfreich zu sein, und Sie lassen Geben Sie ein Datum manuell mit der Tastatur anstelle des Dropdown-Menüs ein. Wenn die Zahlen ohne Leerzeichen angezeigt würden, wäre das Datum nicht eindeutig. Zum Beispiel, was Datum bedeutet dies bezieht sich auf:

1232016 

Ist es December 3, 2016 oder January 23, 2016? Also die Räume sind erforderlich. Ihre beste Wette ist dem Tag und Monat Werte eine führende Null zu geben:

dtpStart.CustomFormat = "MMddyyyy"; 
+0

Dank DavidG. Vielleicht war mein Beispiel schlecht gewählt, aber es sollte den Punkt verdeutlichen, dass Leerzeichen * immer * vor dem Monat und Tag erscheinen. In unserem Produktionscode würden wir gerne das landschaftsspezifische "short-date" -Format des Clients verwenden, wie es von CultureInfo bereitgestellt wird (z. B. M/d/yyyy für 1033), aber dort erhielten wir auch zusätzliche Leerzeichen. Ich werde deinen Vorschlag am Morgen versuchen, um zu sehen, ob ich führende Nullen erzwingen kann, da dies vielleicht akzeptabler ist. Wenn das funktioniert, muss ich möglicherweise einen benutzerdefinierten Satz von länderspezifischen Formaten erstellen. Trotzdem danke für den Vorschlag –