Das Problem, mit dem Sie es zu tun haben, ist, dass Sie es mit zwei völlig verschiedenen Formaten und Werten zu tun haben.
Im ersten Beispiel, Sie geben das String-Format:
"{0:MM/dd/yyyy HH:mm:ss tt} "
und dann wird den Wert Bereitstellung
DateTime.Now + Convert.ToString(newurls[counter])
Den Standard ToString()
Implementierung für ein Datum ist die kurze generische Version. Da der Parameter 0
keine DateTime ist, wird der Wert als Zeichenfolge behandelt. Sie können dies überprüfen, indem Sie einfach schreiben:
sw.WriteLine(DateTime.Now + Convert.ToString(newurls[counter]));
Die Lösung besteht darin, die verschiedenen Komponenten als separate Elemente zu behandeln:
sw.WriteLine("{0:MM/dd/yyyy HH:mm:ss tt} {1}",
DateTime.Now,
Convert.ToString(newurls[counter]));
Sie jetzt die Beziehung ändern zueinander und bekommen von {1}
und {0}
können, was du erwartest. Wenn Sie Zeichenkettenformate verwenden, sollten Sie nie benötigen, um das +
Zeichen zu verwenden. Schreiben Sie einfach Ihre Werte als kommagetrennte Liste und verwenden Sie die Zahl in den geschweiften Klammern, um auf die einzelnen Parameter zu verweisen, die Sie übergeben. In diesem Fall wurde DateTime.Now
als erstes übergeben, daher bezeichnen wir es als {0}
. Convert.ToString(newurls[counter])
wurde in Sekunden übergeben, so dass wir es als {1}
bezeichnen.
Haben Sie "sw.Write (" {0: MM/TT/JJJJ HH: mm: ss tt} ", DateTime.Now); sw.WriteLine (Convert.ToString (newurls [counter]));' EDIT: Igors Antwort ist besser. Verwende das :) – ManoDestra