tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
517
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nobody23 Nobody23 ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    16
    Hallo

    Ich brauch Rat, ich habe die Aufgabe immer zur vollen Stunde eine Aktion zu starten.

    Ich hab auch "Timer" in Java gefudnen, der jedoch kann nur "Warte [x]ms, dann tue".

    Ich brauch jedoch "Prüfe ob [X:00Uhr] ist, wenn ja dann tue".

    Wie krieg ich das hin?

    Gruss
    Nobody
    Geändert von Nobody23 (26.11.08 um 15:32 Uhr)
     

  2. #2
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    Das du da noch nicht selber drauf gekommen bist....
    Man könnte ja im Ersten *tue* das tun, was du wolltest..

    also:

    Warte [x]ms, dann tue:
    -- Prüfe ob [X:00Uhr] ist, wenn ja dann tue
     

  3. #3
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    Code java:
    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
    
    import java.util.Date;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
     
    /* extends Thread brauchst du damit du Thread.sleep() aufrufen kannst. Dadruch wartet der Prozess ohne die CPU zubeanspruchen*/
    public class Anwendung extends Thread {
        public static void main(String[] args) {
            // Try catch fängt fehler ab und gibt diese (in diesem Fall) aus
            try {
                /* Console ausgabe das das Programm gestartet wurde */
                System.out.println("Start");
                /* Counter = die Zeit wie lange der Thread laufen soll (in Sekunden) */
                int counter = 60 * 60 * 24;
                /* Diese Schleife läuft so lange wie der Counter größer als 0 ist */
                while (counter > 0) {
                    // Hier wird ein neues Datum angelegt mit dem aktuellem Datum
                    // (incl uhrzeit)
                    Date d = new Date(System.currentTimeMillis());
                    // Hier wird geprüft ob minuten und Sekunden auf 0 stehen
                    if (d.getMinutes() == 0 && d.getSeconds() == 0) {
                        // Sobald du in dieser if bedingung bist, kannst du deine
                        // Action aufrufen, in diesem Beispeil öffnet sich ein
                        // kleines Fenster
                        JOptionPane.showMessageDialog(new JFrame(), "*blub*");
                    }
                    // Hier lässt du den Thread für 1 Sekunde warten
                    Thread.sleep(1000);
                    // Hier wird der Zähler manipuliert (zählt runter)
                    counter--;
                }
                // Hier die Ausgabe das das Programm beendet wurde.
                System.out.println("Stop");
            } catch (Exception e) {
                e.printStackTrace();
            }
     
        }
    }
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    ging auch so:
    Code java:
    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
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.concurrent.TimeUnit;
     
    /**
     * @author Thomas.Darimont
     * 
     */
    public class EveryHourExample {
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Calendar calendar = new GregorianCalendar();
    long millisToNextFullHour = TimeUnit.MINUTES.toMillis(calendar
                    .getMaximum(Calendar.MINUTE)
                    - calendar.get(Calendar.MINUTE) )
                    + TimeUnit.SECONDS.toMillis(calendar
                            .getMaximum(calendar.SECOND)
                            - calendar.get(Calendar.SECOND) + 1L);
            new Timer().scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    System.out.println("Ding dong: " + new Date());
                }
            }, millisToNextFullHour, TimeUnit.HOURS.toMillis(1L));
        }
     
    }

    Mit Quartz geht das noch ein wenig einfacher:
    http://www.opensymphony.com/quartz/

    Gruß Tom
     

  5. #5
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Hallo
    das obige Beispiel ist nach zweiten Hinsehen vermutlich nicht sehr zuverlässig, zumindest kann man es noch sehr optimieren, damit nicht ständig der Timer (hier eigetnlich Thread) aufwacht.
    Also ich würde die jetzige Zeit nehmen und die nächste volle Stunde mittels GregorianCalender ermitteln. dann würde ich einen java.util.Timer und einen TimerTask (der dann jede Stunde was machen soll) erstellen, wobei der Timer mit dem ersten auftreten des Ereignisses und dem delay einer Stunde und dem TimerTask gefüttert wird (methode: timer.scheduleAtFixedRate(timerTask,calen.getTime(), 60*60*1000); und fertig sei dei Laube.
    Optimerit in sofern, dass der TimerTask vom Timer tatsächlich nur einmal die Stunde erwacht.

    haha Tom ist mir gewissermaßen zuvorgekommen, mit obigen Beispiel meine ich natürlich das von Johannes7146
    Geändert von takidoso (26.11.08 um 17:51 Uhr)
     

Ähnliche Themen

  1. Oracle SQL - Datenausgabe zur vollen Stunde
    Von sqlrosaki im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 06.11.08, 10:12
  2. Zeit bis zur vollen stunde
    Von Ichbinalex im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 26.04.08, 07:40
  3. Vollen Pfad ausgeben
    Von m4nueL im Forum PHP
    Antworten: 16
    Letzter Beitrag: 04.12.04, 11:17
  4. vollen ordner löschen
    Von deinertsche im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.03.03, 10:17
  5. vollen Eintrag erzwingen
    Von z0oL im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.06.02, 22:23