Autor Beitrag
Vegeto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mo 22.04.13 11:37 
Hallo,

ich habe momentan eine völlige Blockade -.-
Habe im Internet nachgeguckt und da sprechen sie nur von DateTime und das es damit Funktioniert, doch ich habe es nicht geschafft.

Bin gerade dabei für mich einen kleinen Arbeitszeitrechner zu entwicklen.
Meine Anwendung zeigt in einer Textbox, die Nackte Arbeitszeit an, abzüglich Pause, nun soll er die ganzen Arbeitszeiten von einem Monat in eine sperate Textbox speichern, mit Semikolon oder Komma getrennt, dann soll er mit einer schleife die Textbox, mit den ganzen Arbeitszeiten durch gehen mittels schleife, das schaffe ich auch.

Doch nun meine frage da es in einem Monat mehrere Arbeitszeiten gibt, wie kann ich die ganzen Arbeitszeiten zusammen rechnen?
Mir reicht schon ein Ansatz um auf die Richtige fährte zu kommen.

Ihr müsst es nicht mal an meinem Beispiel zeigen, sondern ganz banal mir sagen wir das geht, dass er das Richtig macht mit dem korrekten Zeiten.

Lg
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 22.04.13 11:45 
Excel? ^^
Vegeto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mo 22.04.13 11:49 
Hallo thepaine91...

xD was soll ich dazu sagen, ist mir klar das es mit Excel geht und viel einfacher ist xD

Möchte es aber gerne in C# realisieren :/

Da meine Anwendung einwenig mehr beinhaltet.

Lg
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 22.04.13 11:55 
Habe kurz mal recherchiert das sollte aber am besten sein.
Initialisierst das einfach mit 0 und addierst dann deine Zeit Differenzen auf.

msdn.microsoft.com/e...system.timespan.aspx

Beispiel zur Verwendung ist weiter unten auch zu finden.
Vegeto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mo 22.04.13 12:06 
Hallo thepaine91,

die TimeSpan-Struktur habe ich mir auch angeguckt, da würde das Problem auftrette, wenn ich mehre Arbeitszeiten aufeinmal benutzen will, bei TimeSpan kann man leider nur zwei zeiten nehmen, in meinem Fall wären es 20 Arbeitstage.

Verstehst du was ich meine?

Lg
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 22.04.13 13:16 
Nicht wirklich.

Beschreibe doch bitte nochmal etwas genauer was genau du machst was davon bereits funktioniert und was nicht. Aber so kann ich dir leider nicht wirklich folgen.
Vegeto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mo 22.04.13 13:53 
Hi thepaine91,

Ich arbeite gerade an einer GUI für mich, einen kleinen Arbeitskalender, du kannst ihn dir so vorstellen, daruaf ist ein DateTimepicker, vier MaskedTextBox und ein Button(für das speichern der Daten).

Mit dem DateTimePicker wähle ich das Datum aus. In drei der vier Boxen kommen Zeit angaben rein (Anfangszeit,Endzeit und Pausenzeit) und die vierte Box berechnet dann die komplette Arbeitszeit aus, davon wurde die Pausenzeit abgezogen.

Nun möchte ich das er die nackte Arbeitszeit, in eine nicht sichtbare Textbox legt(das ist kein problem :)), dass kannst du dir so vorstllen:
Textbox:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
___________________
|08.03,08.15,08.33,|
|07.55 usw.        |
|                  |
|                  |
|__________________|


Das ist für mich/Benutzer nicht auf der Gui sichtbar.
Nun möchte ich bei der Form_Load_Ereigniss, eine Funktion schreiben, wo er in diese Textbox geht und die ganzen Arbeitszeiten zusammen rechnet und solange ich mit dem DateTimePicker in einem Monat befinde, z.B. April soll er bis dato errichte Arbeitszeit auf der GUI anzeigen.
Natürlich kann die Anwendung noch nicht wissen, welche Arbeitszeit zu welchem Monat gehört, aber das wäre kein problem, man könnte einfach mittels DateTimePicker das Datum mit in die Textbox schreiben so wäre alles eindeutig.

Für mich bleibt einfach die frage offen wie es möglich ist mehre Zeiten zusammen zu addieren und daraus eine Korrekte zeitangabe zu bekommen.

Denn wenn ich mit double/float arbeite rechnet er das ganz normal, aber wie wir wissen hat eine Stunde exakt 60 min und nicht 100 min.

Ich hoffe du kannst nun meine Situation besser nachvolziehen.

Lg

Danke zunächst einmal :)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 22.04.13 14:11 
Zitat:
Nun möchte ich das er die nackte Arbeitszeit, in eine nicht sichtbare Textbox legt(das ist kein problem :)), dass kannst du dir so vorstllen:


Die Arbeitszeit wird ein Integer, Double, Timespan oder was auch immer sein. Wofür brauchst du ein Control?

Zitat:
Denn wenn ich mit double/float arbeite rechnet er das ganz normal, aber wie wir wissen hat eine Stunde exakt 60 min und nicht 100 min.


Dein Float wird aber eindeutig Stunden oder Minuten darstellen und keinen Mix davon(30 Minuten sind 0,5 Stunden oder umgekehrt). Wo ist also das Problem? TimeSpans kann man übrigens auch einfach addieren.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 22.04.13 14:30 
So jetzt ist das ganze etwas verständlicher.
Ja wie zuvor erwähnt kannst du einfach Timespan verwenden.

Wenn ich das der Dokumentation richtig entnommen habe sollte das so funktionieren:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  Timespan time = new Timespan(x,x,x);
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));

// Alternativ
  time = time + time; 
// usw..

Für diesen Beitrag haben gedankt: Vegeto
Vegeto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mo 22.04.13 14:35 
Hi thepaine91

Ahhh... So könnte es tatsälich funktionieren. :)

Ich werde es ausprobierne und dir bescheid geben, nur eine verständiss frage:
Bei:
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  Timespan time = new Timespan(x,x,x);
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));
  time = time.Add(new TimeSpan(0250));

// Alternativ
  time = time + time; 
// usw..


hast du immer
new TimeSpan(0250) benutzt, dies gilt nur als Teszwecke oder muss ich das auch so übernehmen?

Lg
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 22.04.13 14:56 
Das war nur ein Beispiel wie man eine Zeit beim erzeugen eines Timespans definiert.
Die 4 möglichen Varianten werden dir unter msdn.microsoft.com/e...mespan.timespan.aspx erklärt :zustimm: .