Hi. Ich versuche, einen eingehenden datetime-Wert zu konvertieren, der in einem String-Format zu unserem System kommt. Es scheint, dass, wenn die Genauigkeit von Millisekunden höher als 7 ist, das Date-Time-Parsing in .NET den Wert nicht zu mögen scheint und den Wert nicht konvertieren/analysieren kann. Ich bin ein bisschen fest, was ich dafür tun soll? Mein einziger aktueller Gedanke ist, dass es eine Grenze für die Millisekundengröße gibt und dass mehr Präzision nicht möglich ist? Aber ich möchte bestätigen, dass dies der Fall ist, anstatt davon auszugehen. Beispiel:.NET datetime Millisekunden-Genauigkeitsproblem beim Konvertieren von Zeichenfolge in Datetime
string candidateDateTimeString = "2017-12-08T15:14:38.123456789Z";
if (!success)
{
success = DateTime.TryParseExact(trayportDateTimeString, "yyyy-
MM-dd'T'HH:mm:ss.fffffffff'Z'",
CultureInfo.InvariantCulture, dateTimeStyles, out dateTime);
}
Wenn ich die 'f' Werte auf nur 7, dann Datum Zeit Parsing funktioniert reduzieren. Gibt es eine Grenze? Oder mache ich etwas offensichtlich falsch?
DateTime hat Genauigkeit bis zu 7 Ziffern, alle nachfolgenden können sowieso nicht dort gespeichert werden, deshalb ist ein solches Format nicht erlaubt. – Evk
Die kleinste Zeit, die DateTime speichern kann, ist 100 Nanosekunden. Das sind 7 Ziffern in der Fraktion. Anstatt die achte und folgende Ziffer einfach still zu ignorieren, wird es Ihnen sagen, dass Sie es falsch machen. Dies stellt sicher, dass Sie, wenn Sie jemals wieder zu einer Zeichenfolge zurückkehren, genau die gleichen Ziffern erhalten. Zuverlässige Rundauslösung ist wichtig. Und außerdem kannst du dir keine Uhr leisten, die so genau ist, es ist nicht die Art von Ausrüstung, die du in deinem Keller hast. –