Counter in Basic: auf Tag X runterzählen?

Xenolith

Mitglied
Hallo,
ich möchte einen Counter programmieren der mir minutengenau von tag x (soll im programm festgelegt werden also nicht variable) runterzählt und mir bei jedem programmstart die Zeit ausgibt die ich noch habe bis Tag X erreicht ist.

wäre nett wenn ich mir helfen könntet danke auf jedenfalls schonmal im vorraus


XenoLith
 
Hallo XenoLith,

dazu gibt es die DateDiff-Funktion. Schaue da mal in die Online-Hilfe (VB6).
Du kommst dann in etwa zu diesem Ergebnis:

Code:
Dim sBisDatum As String
Dim lRestzeit As Long
:
sBisDatum = "31/12/2006"  ' bis dahin wird gerechnet, z. B.: 31.12.2006
:
' und das beim Programmstart:
lRestzeit = DateDiff("n", Now, sBisDatum)

Viel Erfolg
Walter Gutermann
 
so hab jetzt dank deiner hilfe einen quelltext auf die beine stellen können der funtz...

Code:
MsgBox(DateDiff("d", Now, "7.12.2007"))

1. mich würde interressiren wie ich die ausgabe in einer textbox ausgeben lassen kann!
2. und ich möchte gerne das nicht nur die tage sondern auch die jahre, monaten, tage, stunden, und minuten wie stell cih das auf die beine?
 
Hallo, versuch´s mal so:
Code:
Private Sub Form_Load()
  Label1.Move 60, 100, 5230, 2000
  Label1.FontSize = 8
  Label1.FontBold = True
  Label1.Caption = ""
  Timer1.Interval = 1000
  Timer1_Timer
End Sub

Private Function CountDown(datStart As Date, datEnd As Date) As String

Dim intYear As Integer, intMonth As Integer
Dim intYD As Integer, intMD As Integer, intWD As Integer, intTD As Integer
Dim intHD As Integer, intND As Integer, intSD As Integer

If DateDiff("s", datStart, datEnd) >= 0 Then

  intYear = Year(datStart)
  intMonth = Month(datStart)

  intYD = Year(datEnd) - intYear
  intMD = Month(datEnd) - intMonth
  intTD = Day(datEnd) - Day(datStart)
  intHD = Hour(datEnd) - Hour(datStart)
  intND = Minute(datEnd) - Minute(datStart)
  intSD = Second(datEnd) - Second(datStart)

  If intSD < 0 Then
    intND = intND - 1
    intSD = intSD + 60
  End If

  If intND < 0 Then
    intHD = intHD - 1
    intND = intND + 60
  End If

  If intHD < 0 Then
    intTD = intTD - 1
    intHD = intHD + 24
  End If

  If intTD < 0 Then
    intMD = intMD - 1
    intTD = intTD + Day(DateSerial(intYear, intMonth + 1, 0))
  End If

  intWD = Int(intTD / 7)
  intTD = intTD - (intWD * 7)

  If intMD < 0 Then
    intYD = intYD - 1
    intMD = intMD + 12
  End If

Else
  Timer1.Enabled = False
  Label1.FontSize = 26
  Label1.FontBold = False
  CountDown = "Es ist soweit, Countdown beendet !"
  Exit Function
End If

CountDown = "Es sind noch: " & vbCrLf & vbCrLf _
& intYD & " Jahr(e) und " & intMD & " Monat(e) und " & intWD & " Woche(n) und " & intTD & " Tag(e)" & vbCrLf & vbCrLf _
& intHD & " Stunde(n) und " & intND & " Minute(n) und " & intSD & " Sekunde(n)"

End Function

Private Sub Timer1_Timer()
  Label1.Caption = CountDown(Now, "31.12.2006 00:00:00")
End Sub
 
hm bei mir funtz das nicht...
ich hab einen timer (name=timer1) und eine label (name= label1) erstellt... kannst du mir mal deinen ganzen projektordner schicken?

d a t a m i n e r @ g m x . d e (ohne leerzeichen, ist nur wegen den emailaddy such progs der spamversender)
oder per icq: 317009075

danke aber für deine hilfe!

XenoLith
 
Fehler 1 "Public Event Move(sender As Object, e As System.EventArgs)" ist ein Ereignis und kann nicht direkt aufgerufen werden. Verwenden Sie eine RaiseEvent-Anweisung, um ein Ereignis aufzurufen. C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 4 9 die stunde null
Fehler 2 "FontSize" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 5 9 die stunde null
Fehler 3 "FontBold" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 6 9 die stunde null
Fehler 4 "Caption" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 7 9 die stunde null
Fehler 5 "Day" ist ein Typ und kann nicht als Ausdruck verwendet werden. C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 25 21 die stunde null
Fehler 6 "Day" ist ein Typ und kann nicht als Ausdruck verwendet werden. C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 25 35 die stunde null
Fehler 7 "Day" ist ein Typ und kann nicht als Ausdruck verwendet werden. C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 47 33 die stunde null
Fehler 8 "FontSize" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 60 13 die stunde null
Fehler 9 "FontBold" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 61 13 die stunde null
Fehler 10 "Caption" ist kein Member von "System.Windows.Forms.Label". C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 73 9 die stunde null
Fehler 11 "End Sub" muss ein entsprechendes "Sub" voranstehen. C:\Dokumente und Einstellungen\Joel\Eigene Dateien\Visual Studio 2005\Projects\die stunde null\die stunde null\Form1.vb 77 5 die stunde null

hab mal die fehlermeldung gepostest...
ich programmier mit visual basic express
 
Hallo, ich habe das Ganze mal auf VB 2005 umgestellt.
Code:
Public Class Form1
    Private Function CountDown(ByVal datStart As Date, ByVal datEnd As Date) As String

        Dim intYear As Integer, intMonth As Integer
        Dim intYD As Integer, intMD As Integer, intWD As Integer, intTD As Integer
        Dim intHD As Integer, intND As Integer, intSD As Integer

        If DateDiff("s", datStart, datEnd) >= 0 Then

            intYear = Year(datStart)
            intMonth = Month(datStart)

            intYD = Year(datEnd) - intYear
            intMD = Month(datEnd) - intMonth
            intTD = Microsoft.VisualBasic.DateAndTime.Day(datEnd) - Microsoft.VisualBasic.DateAndTime.Day(datStart)
            intHD = Hour(datEnd) - Hour(datStart)
            intND = Minute(datEnd) - Minute(datStart)
            intSD = Second(datEnd) - Second(datStart)

            If intSD < 0 Then
                intND = intND - 1
                intSD = intSD + 60
            End If

            If intND < 0 Then
                intHD = intHD - 1
                intND = intND + 60
            End If

            If intHD < 0 Then
                intTD = intTD - 1
                intHD = intHD + 24
            End If

            If intTD < 0 Then
                intMD = intMD - 1
                intTD = intTD + Microsoft.VisualBasic.DateAndTime.Day(DateSerial(intYear, intMonth + 1, 0))
            End If

            intWD = Int(intTD / 7)
            intTD = intTD - (intWD * 7)

            If intMD < 0 Then
                intYD = intYD - 1
                intMD = intMD + 12
            End If

        Else
            Timer1.Enabled = False
            Label1.Font = New Font("Arial", 20, FontStyle.Bold)
            CountDown = "Es ist soweit, Countdown beendet !"
            Exit Function
        End If

        CountDown = "Es sind noch: " & vbCrLf & vbCrLf _
                                     & intYD & " Jahr(e) und " & intMD & " Monat(e) und " & intWD & " Woche(n) und " & intTD & " Tag(e)" & vbCrLf & vbCrLf _
                                     & intHD & " Stunde(n) und " & intND & " Minute(n) und " & intSD & " Sekunde(n)"

    End Function

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label1.Text = CountDown(Now, "16.12.2007 09:56:00")
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.Size = New Size(350, 150)
        Label1.Location = New Point(10, 10)
        Label1.Size = New Size(320, 120)
        Label1.Font = New Font("Arial", 8, FontStyle.Bold)
        Label1.Text = ""
        Timer1.Interval = 1000
        Timer1.Start()
        Timer1_Tick(sender, e)
    End Sub

End Class
 
Danke erstmal funktioniert soweit!

allerdings ha ich eine frage:
Code:
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label1.Text = CountDown(Now, "7.12.2007 21:50:00")
    End Sub

hab jetzt die zeit geändert im timer... allerding zeigt mir der timer ein ergebnis an was um genau 2 tage von dem abweicht was ich von hand ausgerechnet habe... liegt das eventuell daran das er mit genau 30 tagen pro monat rechnet?
 
Zurück