Porównywanie dat?

0
  1. Mam problem z porównaniem dat ;/ może najpierw co chce osiągnąć. Chciałbym aby program sprawdzał
    o danej godzinie na o 9 rano każdego dnia datę systemową. Jak to zrobić?

2.Jak porównać daty? domyślam się że trzeba użyć compare to ale coś mi nie idzie ;/ Chce uzyskać coś
takiego. Jeśli 2 daty są równe wyświetl komunikat.

Jak dotąd potrafię pobrać aktualna date w takim formacie:
SimpleDateFormat formatdaty = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
String data_systemowa = formatdaty.format(calendar.getTime());

Teraz chciałbym porównać datę pobraną data_systemowa (typu string) z dowolną inna data w
tym-samym formacie

Jak to osiągnąć? troche juz nad tym siedzie i coś mi nie idzie a to moje początki z java Proszę o pomoc

0

A czy o 9 rano kazdego dnia data systemowa moze byc inna niz 9 rano?

0

Tak bo o 9 rano kazdego dania, data jest inna. Godzina jest zawsze 9 rano, ale data już nie. Zreszta chciałbym aby o tej 9 rano zrobiło się jeszcze kilka rzeczy ale to już sobie poradzę gdy zobaczę jak o 9 rano pobrać datę systemowa.

ps. program działa 24h/dobe. Wiec nie trzeba go specjalnie uruchamiać.

0

Racja, sory za powyzszy post. A co do porownywania dat, to nie mozesz uzyc obiektow typu Date i metod after(Date) lub before(Date)?

0

Hyyyy no niby moge, tylko tego nie znam. Ale ok to już coś wiem ;)

0

Ale jednak przydało by się odpowiedz na posta ;)

0

Jak masz 2 daty w postaci Stringa w tym samym formacie to cyz sa rowne mozna sprawdzic wywolujac String.equals() przeciez. Ale trzymanie i porownywanie dat jako stringi mi sie nie podoba.

0

A może zrób to używając klasy Timer. Stworzymy nasze zadanie:

public class Task extends TimerTask {		
	public void run() {
		System.out.println("Wyswietlam komunikat o godzinie 9:00");
	}
}

Przykładowe wywołanie zadania:

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Timer;

public class Program {

	static public void main(String args[]) {
		final int RunHour = 9;// 9 z rana
		final int period = 24 * 60 * 60 * 1000;//24H * 1000;
		Timer timer = new Timer();
		GregorianCalendar runTime = new GregorianCalendar();
		if(runTime.get(Calendar.HOUR_OF_DAY) >= RunHour) {
                        //9:00:00 minęła, jutro rozpoczniemy działanie
			runTime.add(Calendar.DAY_OF_MONTH, 1);
		}
		runTime.set(Calendar.HOUR_OF_DAY, RunHour);//9 
		runTime.set(Calendar.MINUTE, 0);//00
		runTime.set(Calendar.SECOND, 0);//00
                //uruchamiamy zadanie, ktore bedzie sie wykonywac codziennie o 9 z rana.
		timer.schedule(new Task(), runTime.getTime(), period);
	}
}
0

Super, działa. Ale czy na pewno bedzie to robić cyklicznie każdego dnia? Dodałem do swojego programu i raz wykonał ok ale gdzy zmienilme date w trakcie działania programu o 24h do przodu juz nie. Ale moze to przez zmiane daty? Tak czy tak wielkie dzieki.

0

Specyfikacja Javy mówi, że będzie działać cyklicznie. Drugi argument definiuje moment w czasie kiedy należy uruchomić pierwszy raz zadanie, a trzeci definiuje ile milisekund musi upłynąć do następnego uruchomienia. Raz wywołane zadanie powinno zapewnić poprawne działanie. Zmniejsz zmienną period do 60 * 1000 (60 tysięcy milisekund = 1 minuta) i sprawdź czy zadanie będzie się wykonywać co minutę.
Ogólnie trzeci parametr mówi ile milisekund ma upłynąć do następnego wywołania.
[1] http://www.cs.waikato.ac.nz/~jcleary/230/jdkdocs/api/java/util/Timer.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1