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/~[...]docs/api/java/util/Timer.html

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