Ich habe eine sehr einfache Methode, die eine Zeichenfolge nimmt, bricht sie in ein Char-Array, dann erstellt eine neue Zeichenfolge aus den Stücken. Aber es funktioniert unerwartet und ich verstehe nicht warum? Hier ist ein Bild des Haltepunkts. Der Eingabe-String ist in diesem Fall "20160622".Versuchen, seltsames String-Verkettungsverhalten zu verstehen
Bearbeiten: Sorry für das Bild. Hier ist die Frage im Text.
internal class Program
{
private static void Main()
{
string test = "20160622";
Console.WriteLine(ConvertDateField(test));
Console.ReadKey();
}
private static string ConvertDateField(string date)
{
var temp = date.ToCharArray();
var output = temp[0] + temp[1] + temp[2] + temp[3] + "-" + temp[4] + temp[5] + "-" + temp[6] + temp[7] + " 00:00:00";
return output;
}
}
Der Ausgang ist "201-06-22 00:00:00".
Edit 2: Ich verstehe, es gibt wahrscheinlich bessere Möglichkeiten, dies zu tun. Ich versuche zu verstehen, warum dieser Code so funktioniert, wie er ist. dh. Warum ist die 6 der einzige Char, der nicht verkettet wird?
Wie Sie sehen können, das vierte Zeichen, Temperatur [3], die eine ‚6‘ ist, wird nicht in die Ausgabezeichenfolge verkettet werden. Warum?
Bearbeiten 3: Ich löste das Problem auf diese Weise
private static string ConvertDateField(string date)
{
return DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd 00:00:00");
}
Sie Steve für Ihren Rat danken.
Bitte schreiben Sie einen [mcve] mit dem Code und geben Sie ihn als * Text * anstatt als Screenshot aus. Grundsätzlich klingt es jedoch so, als müsste man den Wert analysieren und neu formatieren. –
Scheint wie eine wirklich seltsame und schlechte Art, ein Datum zu formatieren. Verwenden Sie DateTime.TryParse mit der Formatzeichenfolge, um das Datum in ein DateTime-Objekt zu analysieren, und verwenden Sie anschließend ToString() mit einer Formatzeichenfolge, um es wie gewünscht auszugeben. – SledgeHammer
was ist mit den ganzen Stimmen unten. Ich verstehe es nicht. Ich konnte das Problem nicht herausfinden, ohne es tatsächlich in einem Debugger auszuprobieren. Für Anfänger natürlich. – Steve