Frage zu TimerTask / Timer

-ben-

Mitglied
Hallöle!

Ich habe folgenden Code:

Code:
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
 
Hallo!

Code:
   /**
    * 
    */
   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
 
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?
 
Hallo!

Schau mal hier:
Code:
  /**
   * 
   */
  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
 
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
 
Zurück