Entwickler-Ecke
WinForms - String in DateTime konvertieren
rennmaus - Di 17.04.18 09:10
Titel: String in DateTime konvertieren
Hallo zusammen, ich möchte gerne eine Zeichenfolge aus einer Textbox in einen string einlesen und diesen dann in das Zeitformat "HH:mm" konvertieren. Ich komme einfach nicht auf eine Lösung, ich wäre Euch dankbar! Dabei stoße ich jedoch auf folgenden Fehler: Liegt es an den Trennzeichen?
"System.FormatException: "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt."" //Zeile 34
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Globalization;
namespace _2018_04_16_Arbeitszeitberechner { public partial class Form1 : Form {
string x = ""; string y = "";
private void textBox1_TextChanged(object sender, EventArgs e) { string x = textBox1.Text; }
private void textBox2_TextChanged(object sender, EventArgs e) { string y = textBox2.Text; }
void zeit_berechnen() { CultureInfo provider = new CultureInfo("de-DE"); DateTime dienstbeginn = DateTime.ParseExact(x, "HH:mm", provider); DateTime dienstende = DateTime.ParseExact(y, "HH:mm", provider); }
private void button1_Click(object sender, EventArgs e) { zeit_berechnen(); } } } |
Delete - Di 17.04.18 09:48
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69 - Di 17.04.18 10:54
Benutze auch einfach mal den Debugger - schau mal was in x und y drinsteht (dann siehst du den Fehler in den beiden TextChanged-Methoden)...
Besser wäre es sowieso, die beiden Werte als Parameter an die Methode zeit_berechnen zu übergeben, d.h. du brauchst dann die TextChanged-Methoden nicht mehr.
PS: "remove unused usings"
Delete - Di 17.04.18 11:10
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen - Di 17.04.18 12:28
Überlege auch mal was es bedeutet das du den Datentyp vor x und y in den TextChanged Methoden hingeschrieben hast.
rennmaus - Di 17.04.18 13:23
Ich melde mich zurück! :D
Dankeschön, dass ihr mich auf Unsinnigkeiten und Fehler aufmerksam gemacht habt.
Ich habe Eure Verbesserungsvorschläge (z.B.: den DateTimePicker) umgesetzt und nun eine funktionierende Lösung gefunden!
Gerne möchte ich Euch zuletzt nochmal den Code zeigen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| public Form1() { InitializeComponent(); dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "HH:mm"; dateTimePicker2.Format = DateTimePickerFormat.Custom; dateTimePicker2.CustomFormat = "HH:mm"; }
void zeit_berechnen() { DateTime dt_dienstbeginn = Convert.ToDateTime(dateTimePicker1.Value); DateTime dt_dienstende = Convert.ToDateTime(dateTimePicker2.Value); double arbeitszeit = (dt_dienstende - dt_dienstbeginn).TotalHours; double pflichtzeit = 7.8; double db_gleitzeitstatus = arbeitszeit - pflichtzeit; string gleitzeitstatus = Convert.ToString(db_gleitzeitstatus * 60); textBox1.Text = gleitzeitstatus; } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!