Laden...

Uhrzeit Ausgabe nicht aktuell

Erstellt von lnino vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.265 Views
Thema geschlossen
L
lnino Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren
Uhrzeit Ausgabe nicht aktuell

Hi an alle.

Ich möchte ein Log meiner Applikation schreiben und dabei Zeilenweise den abgearbeiteten Befehl in eine Textdatei schreiben.

Die Funktion an sich funktioniert super, nur zeigt er mir in jeder Zeile die gleiche Uhrzeit an. Wie kann ich die aktualisieren, oder was habe ich bei meinem Ansatz falsch gemacht?


DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";

public void AppendLogFile(string sFilename, string sLines)
{
     StreamWriter myFile = new StreamWriter(sFilename, true);
     myFile.Write(sLines);
     myFile.Close();
}

AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo lnino,

du initialisierst aktuell zwar einmal mit dem Zeitstempel DateTime.Now, allerdings aktualisierst du den Wert nicht. Daher wird beim Aufruf der Methode AppendLogFile immer auf den gleichen Wert zugegriffen.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

5.742 Beiträge seit 2007
vor 13 Jahren
  
AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");  
  

BTW: Das ist äußerst unschön: Schaue dir einmal die Überladungen von String.Format bzw. von DateTime.ToString an.

L
lnino Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren

Hi m0rius.

Danke für den Hinweis.

Habe nun vor dem schreiben in die Textdatei mittels....

aktuell = DateTime.Now

...die Uhrzeit aktualisiert.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo lnino,

zeig uns doch nochmal deinen Code, wie er jetzt aussieht!

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

L
lnino Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren
DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";

public void AppendLogFile(string sFilename, string sLines)
{
     StreamWriter myFile = new StreamWriter(sFilename, true);
     myFile.Write(sLines);
     myFile.Close();
}
aktuell = DateTime.Now;

AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");

Ist zwar noch immer unschön, aber funktioniert.

Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?

Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03

C
2.121 Beiträge seit 2010
vor 13 Jahren

Das funktioniert so aber eher nicht, wie es da steht?! Bei den Zahlen fehlt ToSstring().
Und ja, ist immer noch unschön.
Immer noch der Hinweis, dir mal DateTime.ToString anzusehen. Damit kriegst du die Werte nämlich zweistellig hin.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo lnino,

schön, dass es jetzt funktioniert. Ich würde dir allerdings wirklich raten, dich mit winSharp93s Hinweis auseinanderzusetzen und die für die Datumsformatierung vom .NET-Framework vorgesehen Klassen zu verwenden.

Hallo chilic,

nein, die Zahlen müssen nicht explizit mit ToString() in einen String konvertiert werden. Durch die Verkettung der Strings mit dem "+"-Operator ist das nicht nötig.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

L
lnino Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren

Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?

Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03

Hat von euch jemand für das obenstehende Problem mit den fehlenden führenden Nullen eine Erklärung? Ich komm da nicht dahinter.

P.s.: Werde mich anschließend an die saubere Gestaltung meines Codes machen. 😃

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo lnino,

Hat von euch jemand für das obenstehende Problem mit den fehlenden führenden Nullen eine Erklärung?

Das kannst du durch Verwendung der - inzwischen mehrfach genannten - ToString-Methode von DateTime lösen.
Dass ein einfaches Int32.ToString (was durch die Verkettung mit dem +-Operator) implizit aufgerufen wird, keine führenden 0er hinzufügt, ist auch sehr sinnvoll: Im Prinzip könnte ja man beliebig viele anhängen - woher sollte da klar sein, nach wie vielen 0ern Schluss sein sollte.

Aber so etwas fällt unter die Grundlagen. Wärst du den zahlreichen Hinweisen nachgegangen und hättest einen Blick in die Doku geworfen, hättest du das Problem sehr schnell selbst lösen können. Siehe [Hinweis] Wie poste ich richtig?

==> Geschlossen

Thema geschlossen