Entwickler-Ecke

WinForms - Count up


Old5chool - Di 21.06.16 22:50
Titel: Count up
Hallo kann mir wär helfen ich brauche einen count up,
der von einem bestimmten Datum und Uhrzeit hoch zählt und mir die die vergangenen Sekunden Minuten Stunden und Jahre anzeigt,
Wochen eventuell auch wenn es möglich ist.


wäre schön wenn ihr mir helfen könnt.


Christian S. - Di 21.06.16 23:01

Hallo,

was hast Du denn bisher versucht und wo hakt es?

Viele Grüße
Christian


Old5chool - Di 21.06.16 23:45

ich habe bis jetzt nur die Sekunden Minuten und Tage
aber die jahre und Wochen bekomme ich nicht hin und
ich muss dazu sagen ich lernen programmiren gerade erst



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:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
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;

namespace WindowsFormsApplication1
{
    public partial class Emily : Form
    {


        public Emily()
        {
            InitializeComponent();

           

        }
        
        private void Form1_Load(object sender, EventArgs e)
        {
            
        Timer t = new Timer();
            t.Interval = 500;
            t.Tick += new EventHandler(t_Tick);
            TimeSpan ts = endTime.Subtract(DateTime.Now);

            

            label1.Text = ts.ToString("d' Days'");
            label2.Text = ts.ToString("h' Hours '");
            label3.Text = ts.ToString("m' Minutes'");
            label4.Text = ts.ToString("s' Seconds'");
            t.Start();


            
        }

        DateTime endTime = new DateTime(2016061619230);
       
            

        void t_Tick(object sender, EventArgs e)
        {
            TimeSpan ts = endTime.Subtract(DateTime.Now);
            label1.Text = ts.ToString("d'Tage'"); 
            label2.Text = ts.ToString("h'Stunden'");
            label3.Text = ts.ToString("m'Minuten'");
            label4.Text = ts.ToString("s'Sekunden'");
        }

        

      
        private void button1_Click_1(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
    }


so sieht es aus bis jetzt


Delete - Mi 22.06.16 01:25

- Nachträglich durch die Entwickler-Ecke gelöscht -


Old5chool - Mi 22.06.16 20:41

also muss ich für monate

(int)monate / 31 nehemen ???


Delete - Mi 22.06.16 20:52

- Nachträglich durch die Entwickler-Ecke gelöscht -


baumina - Do 23.06.16 08:18

Ich würde ja DateDiff nehmen.


Ralf Jansen - Do 23.06.16 10:30

Zitat:
Ich würde ja DateDiff nehmen.


Ein "ich würde ja eine andere Sprache benutzten" ist nur mäßig hilfreich ;)


Zitat:
also muss ich für monate

(int)monate / 31 nehemen ???


Wenn du Monate ausgeben willst solltest du erst definieren was für dich in diesem Kontext ein Monat ist.
- ganze Kalendermonate
- fester Zeitraum unabhängig vom Kalender
- irgendwas anderes

Je nach Entscheidung hast du dann bei der Aussage des Werts zu berücksichtigen das entweder Mitte des Monats bis Mitte des Folgemonats keine ganzer Monat ist (wenn Kalendermonate gemeint sind)
oder das der 1.Februar bis 1.März kein ganzer Monat ist (fester Zeitraum als Monat).


baumina - Do 23.06.16 11:44

Beispiel DateDiff() function in C#
http://reflectionit.nl/blog/2004/datediff-function-in-c


Delete - Do 23.06.16 13:20

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Do 23.06.16 14:28

Es gibt doch auch direkt DateDiff als Funktion in C# :gruebel:
https://msdn.microsoft.com/de-de/library/ms127413(v=vs.110).aspx

Einfach angeben was man möchte (Tage, Jahre, ...) und man bekommt direkt ohne selbst zu rechnen den Zahlenwert. Mag nicht die schnellste Variante sein, aber die einfachste. ;-)


Ralf Jansen - Do 23.06.16 15:03

Das gehört zu diesem bösen VB ;) Ist aber natürlich auch von C# aus nutzbar


C# - Fr 24.06.16 08:45

Die Übersetzung ist ja fürchterlich :D. Aber mit gefällt wie man dem Datum einen Wert geben kann in VB. Gibt es sowas auch in C#? Und ich meine damit nicht die Parse Funktion.


Ralf Jansen - Fr 24.06.16 09:55

Nein. Das ist aber auch in VB.Net kein ~echtes~ Literal. Kann man also so nicht z.B. in einem Attribute verwenden.