2017-08-24 3 views
-2
using System; 
class MainClass { 
    public static void Main (string[] args) { 
    string iString = "12/3/2017 03:24:02 PM"; 
    DateTime oDate = DateTime.ParseExact(iString, "%M/%d/yyyy %h:%m:%s tt",null); 
    Console.WriteLine (oDate); 
    } 
} 

Im obigen Code enthält das Parsing-Format mehrere% -Zeichen. Was meinen sie? Sollen sie sich um ein- und zweistellige Monate/Daten etc. kümmern?C# datetime parse Bedeutung von Prozentzeichen (%)

+4

Dies wird durch die [Fein manuell] bedeckt (https://docs.microsoft.com/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers) . In diesem Fall ist die Verwendung von '%' optional, da die Zeichenfolge mehr als ein Zeichen enthält und keine besonderen Auswirkungen hat. Der Autor mag es aus Konsistenzgründen bevorzugt haben. –

Antwort

0

Per https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers

Eine benutzerdefinierte Datums- und Uhrzeitformat-String besteht aus zwei oder mehr Zeichen. Datums- und Uhrzeitformatierungsmethoden interpretieren beliebige Einzelzeichenfolgen als standardmäßige Datums- und Uhrzeitformatzeichenfolge. Wenn das Zeichen nicht als gültigen Formatbezeichner erkennt, wird eine FormatException ausgelöst. Zum Beispiel wird eine Formatzeichenkette, die nur aus dem Spezifizierer "h" besteht, als Standardformatzeichenfolge Datum und Uhrzeit interpretiert. In diesem speziellen Fall wird jedoch eine Ausnahme ausgelöst, da kein "h" -Standard für Datum und Zeitformat angegeben ist.

Um eine des benutzerdefinierten Datums- und Uhrzeitformat Spezifizierer als einzige Spezifizierer in einem Format Zeichenfolge zu verwenden (das heißt, das „d“, „f“ zu verwenden, „F“, „G“, „h "," H "," K "," m "," M "," s "," t "," y "," z ",": "oder"/"benutzerdefiniertes Format Spezifizierer von selbst), Fügen Sie ein Leerzeichen vor oder nach dem Spezifizierer ein, , oder fügen Sie vor dem einzelnen benutzerdefinierten Datums- und Zeitspezifizierer einen Prozent ("%") -Formatspezifizierer ein.

Beispiel: "% h" wird als benutzerdefiniertes Datums- und Uhrzeitformat interpretiert. Zeichenfolge, die die durch das aktuelle Datum und die Uhrzeit dargestellte Uhrzeit anzeigt. Sie können auch die Formatstring "h" oder "h" verwenden, obwohl diese ein Leerzeichen in der Ergebniszeichenfolge zusammen mit der Stunde enthält. Das folgende Beispiel zeigt diese drei Formatzeichenfolgen.

DateTime dat1 = new DateTime(2009, 6, 15, 13, 45, 0); 

Console.WriteLine("'{0:%h}'", dat1); 
Console.WriteLine("'{0: h}'", dat1); 
Console.WriteLine("'{0:h }'", dat1); 
// The example displays the following output: 
//  '1' 
//  ' 1' 
//  '1 '