DateTime Uhrzeit vergleichen ?!

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    DateTime Uhrzeit vergleichen ?!

    ich kriege es einfach nicht hin, das es bei 21:48 klingelt... was mache ich falsch ? ?( ?( ?(

    VB.NET-Quellcode

    1. Dim UhrzeitDatum As DateTime = DateTime.Now
    2. If UhrzeitDatum = ("21:48") Then
    3. My.Computer.Audio.Play(My.Resources.glocken, AudioPlayMode.Background)
    4. End If
    5. Label1.Text = Format(Now, "HH:mm:ss")
    6. Label2.Text = Format(Now, "dd.MM.yyyy")
    Option strict on!
    Hau dir Format-Funktion raus und verwende anstatt DateTime.Now.ToString("HH:mm:ss")
    UhrzeitDatum ist kein String. Somit ca. so: If UhrzeitDatum = DateTime.Parse("21:48") Then...


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Also jetzt mal ne ernsthafte Frage: möchtest du es überhaupt verstehen?
    Du hast jetzt schon drei Threads zum gleichen Thema aufgemacht, man hat dir immer gesagt, wie du es machen sollst und dir am Ende sogar Code gegeben, aber du verwendest immer noch den selben Ranz vom Anfang und wunderst dich, warum es nicht geht.

    Artentus schrieb:

    Also jetzt mal ne ernsthafte Frage: möchtest du es überhaupt verstehen?
    Du hast jetzt schon drei Threads zum gleichen Thema aufgemacht, man hat dir immer gesagt, wie du es machen sollst und dir am Ende sogar Code gegeben, aber du verwendest immer noch den selben Ranz vom Anfang und wunderst dich, warum es nicht geht.


    @ Artentus! das stimmt zwar was du sagst, es können leider nicht alle Menschen so schlau wie du sein!
    ich lese mir schon viel durch und verstehe es dennoch nicht... ich bin sehr neu auf diesem Gebiet... das dauert halt ein bisschen !!!

    so funktioniert es auch noch nicht :(((

    VB.NET-Quellcode

    1. DateTime.Now.ToString("HH:mm:ss")
    2. Dim UhrzeitDatum As DateTime = DateTime.Now
    3. Label1.Text = DateTime.Now.ToString("HH:mm:ss")
    4. Label2.Text = DateTime.Now.ToString("dd.MM.yyyy")
    5. If UhrzeitDatum = Date.Parse(" 22:15") Then
    6. My.Computer.Audio.Play(My.Resources.glocken, AudioPlayMode.Background)

    Artentus schrieb:

    Das hat rein gar nichts mehr mit Intelligenz zu tun, sonder wie viel Mühe du dir gibst.
    Und außerdem, wenn du schon eine funktionierende Lösung bekommst, warum benutzt du sie dann nicht?



    ???

    kannst du mir da jetzt mal bitte sagen was ich falsch mache ??? ich habe den Code doch schon so umgeschrieben :(
    Du hast von mir eine Lösung für Dein Problem bekommen mein Freund. Ich wollte eigentlich nichts mehr dazu sagen, aber wenn ich das sehe, dann geht mir echt der Hut sowas von hoch. Ich hab Dir gestern per PN noch eine Lösung für Dein Problem geschickt. Von Dir kam kein Danke, kein gar nichts. Was denkst Du? Und dann sehe ich, wie Du nicht mal ansatzweise das umsetzt, was ich Dir vorschlage. Klar ist mein Codevorschlag nicht leicht zu verstehen für einen Anfänger, geb ich zu. Jedoch hab ich mich bemüht, alles zu kommentieren. Ich wäre auch noch weiter bereit gewesen, Dir Hilfestellung zu geben. Nur, wenn nicht mal ein Danke für Deine Mühe kommt, dann kannst Du mich mal. Echt unglaublich.

    Das Letze, was ich Dir noch rate:

    microsoft.com/germany/msdn/akt…005dasentwicklerbuch.mspx

    Schreib mir ja keine PNs mehr oder sonst was. Brings Dir selber bei, wie es 90% der User hier auch getan haben.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Dim targetTime As New TimeSpan(21, 48, 0)
    2. Dim currentTime = DateTime.Now.TimeOfDay
    3. If currentTime.Hours = targetTime.Hours AndAlso currentTime.Minutes = targetTime.Minutes Then
    4. My.Computer.Audio.Play(My.Resources.glocken, AudioPlayMode.Background)
    5. End If
    Es kann nicht funktionieren weil durch DateTime.Now.ToString("HH:mm:ss") in Stunden,Minuten und Sekunden formatiert wird, aber Datetime.Parse formatiert es zu einen Datum + Uhrzeit, deswegen klappt es nicht.

    VB.NET-Quellcode

    1. Dim Uhrzeit As DateTime = CDate(DateTime.Now.ToString("HH:mm"))
    2. If Uhrzeit = CDate("22:24") Then
    3. MessageBox.Show("jo geht")
    4. End If

    ich bin grad selber nícht sicher obs ne gute Variante ist, also bitte bescheid geben :thumbup:

    Gelöschter Benutzer schrieb:

    Es kann nicht funktionieren weil durch DateTime.Now.ToString("HH:mm:ss") in Stunden,Minuten und Sekunden formatiert wird, aber Datetime.Parse formatiert es zu einen Datum + Uhrzeit, deswegen klappt es nicht.

    VB.NET-Quellcode

    1. Dim Uhrzeit As DateTime = CDate(DateTime.Now.ToString("HH:mm"))
    2. If Uhrzeit = CDate("22:24") Then
    3. MessageBox.Show("jo geht")
    4. End If

    ich bin grad selber nícht sicher obs ne gute Variante ist, also bitte bescheid geben :thumbup:



    tut mir echt leid wenn euch so auf die Nerven gehe!

    das Funktioniert leider nicht, weil er die ganze Zeit noch in der Schelife hängt.... weil es ja so lange es 22:24 ist, den Sound aufruft! schöner währe es natürlich nur 1 x!

    @SpaceyXX ... es tut mir leid! sorry... war nicht / ist nicht cool von mir.

    Gelöschter Benutzer schrieb:

    Wo oder wann prüfst du die Uhrzeit denn, mit einem Timer? Dann musst du den Timer beim Tick-Event stoppen.
    Du musst schon etwas mehr Infos bringen wie und wo du es machst! :):S

    Ja oder wie Artentus das sagt :D ;)


    Genau, mit dem Timer1 ... hier der Code!

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. DateTime.Now.ToString("HH:mm:ss")
    3. Dim UhrzeitDatum As DateTime = DateTime.Now
    4. Dim targetTime As New TimeSpan(22, 39, 0)
    5. Dim currentTime = DateTime.Now.TimeOfDay
    6. Label1.Text = DateTime.Now.ToString("HH:mm:ss")
    7. Label2.Text = DateTime.Now.ToString("dd.MM.yyyy")
    8. Dim Frühstück As DateTime = CDate(DateTime.Now.ToString("HH:mm"))
    9. If Frühstück = CDate("22:52:00") Then
    10. My.Computer.Audio.Play(My.Resources.glocken, AudioPlayMode.Background)
    11. Me.Show()
    12. Dim Mittag As DateTime = CDate(DateTime.Now.ToString("HH:mm"))
    13. If Mittag = CDate("22:52:00") Then
    14. Me.Show()
    15. End If
    16. End If
    17. End Sub
    Das ist aber ein Problem was DU jetzt lösen musst und kein anderer, hier im Thread sind mind. 2x gute Lösungen (SpaceyX,Artentus) und du ignorierst sie. Desweiteren sollte dir ein Besuch im MSDN helfen, den Link gebe ich dir nicht das übernimmt schon Google für dich. Du solltest allgemein ERST googlen und dann fragen und nicht den Schritt 'googlen' einfach weglassen ;)
    mfg
    EDIT: Ahh, Lösung ist jetzt anscheinend doch vorhanden (WBB hat mich nicht über neue Beiträge beim Verfassen informiert...O_o)
    "yippieh! it compiles - ship it!"
    Ich würde dazu @Artentus: Methode vorschlagen und den Timer auf 60000 stellen.

    Außerdem hast du unnütziges Zeug im Code du deklarierst so viel was du garnig nutzt!

    Ich würds so machen: (bitte korrigieren wenn nötig :))

    VB.NET-Quellcode

    1. Dim Time As DateTime = DateTime.Now
    2. Label1.Text = Time.ToString("HH:mm:ss")
    3. Label2.Text = Time.ToString("dd.MM.yyyy")
    4. If Time.ToString("HH:mm") = "22:52" Then
    5. My.Computer.Audio.Play(My.Resources.glocken, AudioPlayMode.Background)
    6. Me.Show()
    7. ElseIf Time.ToString("HH:mm") = "22:53" Then 'bei anderer Uhrzeit
    8. Me.Show()
    9. End If
    Genau das meine ich. Ich weiß nicht, wie du schon wieder auf diesen Code gekommen bist, doch da du dich offensichtlich beharrlich zu weigern scheinst, einen funktionierenden Code zu verwenden, sehe ich es gar nicht ein, warum ich mir weiterhin die Mühe machen sollte einen zu schreiben.

    @ConnyKarras
    Was du da machst ist auch nicht wirklich das wahre. Du holst dir zwar die DateTime-Objekte, vergleichst dann aber trotzdem die Stringdarstellungen. Einfach nachschauen, wie ich es gemacht habe.

    Gelöschter Benutzer schrieb:

    und den Timer auf 60000 stellen.
    Bist Du nun der Meinung, dass Du einen Minuten-Timer hast?
    Windows ist ein Multitasking-System, da kommt wer weiß was raus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    echt? das müssteman erstmal ausprobieren.
    Timer.Interval ist nicht in ProzessorTicks oder sonst eine relative ZeitEinheit definiert, sondern in Millisekunden.
    Da könnte ich mir schon vorstellen, dass die systembedingte Abweichung einfach konstant ist, und nicht prozentual. Also bei .Interval100 eine Abweichung von +-5ms, und bei .Inteval60000 auch eine Abweichung von +-5ms.

    Aber müssteman ausprobieren, oder iwo Doku nachlesen.
    Das Betriebsystem stellt mehrere Zeitgeber mit verschiedenen Genauigkeitsstufen zur Verfügung:

    Funktion.............................Einheit.......................Genauigkeit
    ---------------------------------------------------------------------------
    Now, Time, Timer...............Sekunden...................1 Sekunde
    GetTickCount.....................Millisekunden ..............ca. 10 ms
    TimeGetTime.....................Millisekunden .............. ca. 10 ms
    QueryPerformanceCounter QueryPerformanceFrequency gleich


    Microsoft

    Ich glaube nicht, dass es für einen normal Timer irgendeinen Sinn macht, genauer als eine Sekunde zu arbeiten. Im vorliegenden Fall vergleicht man sowieso die Systemzeit mit der Eingabe... 8-)
    Das Leben ist nicht so kompliziert. Eine süsse Erinnerung tut's.
    Indiana Jocutus - Jäger des Variablen-Schatzes

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jocutus“ ()

    Ja genau, ich versteh außerdem nicht ganz was du damit sagen willst RodFromGermany?

    Ich weiß das der Timer ungenau ist, aber ich weiß nicht ob du genau gelesen hast (ist auch egal :)), denn er will auf eine minute prüfen und es spielt also keine rolle ob es mal eine sekunde länger dauert, er will ja nur die systemzeit prüfen und da denk ich wird die Abweichung nicht so groß sein. ;)
    außerdem war die timer-idee von artentus

    (sry per handy verfasst)