tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1183
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    -ben- -ben- ist offline Mitglied Silber
    Registriert seit
    Sep 2005
    Beiträge
    71
    Hallöle!

    Ich habe folgenden Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    final long interval = 1000*60*60*24*7;
            
    Timer timer = new Timer();
    Calendar calendar = Calendar.getInstance();
    calendar.set( Calendar.DAY_OF_WEEK, Calendar.SUNDAY );
    calendar.set( Calendar.HOUR_OF_DAY, 23 );
    calendar.set( Calendar.MINUTE, 50 );
    Date date = calendar.getTime();
            
    timer.schedule( new TestTask(), date, interval );
    Die run() Methode von TestTask sollte jeden Sonntag um 23:50 ausgeführt werden.
    Wenn ich jedoch das Programm starte, wird der TestTask sofort ausgeführt, das sollte nicht sein!
    Was hab ich falsch gemacht?

    Danke und Gruss
    ben
     

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

    Code :
    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
    
       /**
        * 
        */
       package de.tutorials;
       
       import java.text.SimpleDateFormat;
       import java.util.Date;
       import java.util.Timer;
       import java.util.TimerTask;
       
       /**
        * @author daritho
        * 
        */
       public class TimerTaskExample {
       
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
            Timer timer = new Timer();
       
            final long INTERVAL_ONE_WEEK = 1000 * 60 * 60 * 24 * 7;
       
            // Sonntag um 23:50
            //Bzw. hier Code zum ermitteln des naechst gelegenen Sonntags...
            Date startTime = new SimpleDateFormat("dd.MM.yyyy HH:mm")
                    .parse("23.10.2005 23:50");
       
            timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    System.out.println("Foo");
                }
            }, startTime, INTERVAL_ONE_WEEK);
        }
       }
    ...

    Ich wuerde mir da nichts selber bauen und einfach den Quartz Job Scheduler verwenden...
    http://www.opensymphony.com/quartz/

    Gruss Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    -ben- -ben- ist offline Mitglied Silber
    Registriert seit
    Sep 2005
    Beiträge
    71
    Danke für deine Antwort!

    Hmm... Bei dem Calendar guck ich noch nicht ganz durch.
    Wie kann ich denn am einfachsten das Datum des nächsten Sonntages bestimmen?
     

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

    Schau mal hier:
    Code :
    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
    
      /**
       * 
       */
      package de.tutorials;
      
      import java.text.SimpleDateFormat;
      import java.util.Calendar;
      import java.util.Date;
      import java.util.GregorianCalendar;
      
      /**
       * @author Tom
       * 
       */
      public class DetermineNextSundayExample {
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
                SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
            Date date = sdf.parse("29.08.2005");
            System.out.println(date);
            Date nextSunday = getNextSundayFor(date);
            System.out.println(nextSunday);
        }
      
        private static Date getNextSundayFor(Date date) {
            GregorianCalendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            calendar.add(Calendar.DAY_OF_MONTH, 8 - calendar
                    .get(Calendar.DAY_OF_WEEK));
            return calendar.getTime();
        }
      
      }

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    -ben- -ben- ist offline Mitglied Silber
    Registriert seit
    Sep 2005
    Beiträge
    71
    Hey vielen Dank Tom! Das funktioniert so prima!

    Frag mich bloss von wo du diese Zeit hast

    Gruss
    ben
     

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

    Da ich mich leider im moment beruflich nicht mit Java beschäftige und ich nicht aus der Übung kommen will, bin ich gezwungen eben nach Feierabend noch ein wenig zu trainieren.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Timer und Timertask fuer delay
    Von MiMi im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 24.07.09, 13:22
  2. Antworten: 2
    Letzter Beitrag: 03.07.09, 17:03
  3. beenden Timer/TimerTask
    Von MScalli im Forum Java Grundlagen
    Antworten: 4
    Letzter Beitrag: 26.03.09, 10:23
  4. Timer frage
    Von The_Jan im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 07.08.06, 12:19
  5. frage zum TIMER in VB
    Von stevie im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 09.02.04, 11:57