|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
[JAVA] Nuovo giorno, nuova azione
Nel mio programmino dovrei creare un metodo che ad ogni volta che passa le ore 23:23:59, quindi siamo in un nuovo giorno, compia delle azioni. Ora non sò come impostare questo controllo.
Chi mi può dare una mano? Grazie NapalM |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Hai mille soluzioni:
1 - puoi usare i timer (per esempio, java.util.Timer o javax.swing.Timer, quest'ultimo mi piace di piu'); 2 - Puoi creare un thread che fa solo quello: si sveglia, legge l'ora, fa quello che deve fare e si riaddormenta; 3 - Polling di brutto (l'ho messa ma non leggerla nemmeno); 4 - Aiuto al sistema operativo: molti sistemi operativi hanno la possibilita' di effettuare operazioni ad una data ora, potresti sfruttarla. Per esempio, puoi generare degli script, oppure scrivere metodi nativi; High Flying Sottovento |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
Quote:
Escludendo gli ultimi 2... il primo devo leggermi un pò di documentazione, il secondo è come l'avrei immaginato io.. il problema è che deve sempre fare il check della data.. almeno ogni minuto in modo da scattare al nuovo giorno... quindi sarebbe in ciclo while(true) che potrebbe gravare troppo sul SO? (in pratica al nuovo giorno devo copiare un file e rinominarlo) Grazie ![]() NapalM |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
Leggendo qua e là ho messo sù una cosa del genere:
Codice:
java.util.Timer provaTimer = new java.util.Timer(); provaTimer.schedule(new TimerTask() { public void run() { System.out.println("CIAO"); } },new java.util.Date()); NapalM |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
Codice:
java.util.Timer provaTimer = new java.util.Timer(); java.util.Date dataOggi = new java.util.Date(); final Calendar cal = new GregorianCalendar(); cal.setTime(dataOggi); cal.add(Calendar.DAY_OF_YEAR,1); final java.util.Date dataEsatta = cal.getTime(); provaTimer.schedule(new TimerTask() { public void run() { try{ cal.setTime(dataEsatta); cal.add(Calendar.DAY_OF_YEAR,1); dataEsatta = cal.getTime(); System.out.println("CIAO"); }catch (IOException e) {} } },dataEsatta); NapalM |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2000
Messaggi: 1135
|
ho provate a fare delle modifiche per vedere se funziona:
Codice:
java.util.Timer provaTimer = new java.util.Timer(); java.util.Date dataOggi = new java.util.Date(); cal = new GregorianCalendar(); cal.setTime(dataOggi); cal.add(Calendar.SECOND,1); dataEsatta = cal.getTime(); provaTimer.schedule(new TimerTask() { public void run() { System.out.println("DATA PRIMA:"+dataEsatta); java.util.Date date = new java.util.Date(); SimpleDateFormat formatter = new SimpleDateFormat("(dd.MM.yyyy hh:mm:ss)-> "); String timeLog = formatter.format(date); cal.setTime(dataEsatta); //cal.add(Calendar.DAY_OF_YEAR,1); cal.add(Calendar.SECOND,1); dataEsatta = cal.getTime(); System.out.println(timeLog+"CIAO"); System.out.println("DATA DOPO:"+dataEsatta); } },dataEsatta); Codice:
DATA PRIMA:Mon Mar 06 16:40:35 CET 2006 DATA DOPO:Mon Mar 06 16:40:36 CET 2006 (06.03.2006 04:40:35)-> CIAO CIAO CIAO CIAO NapalM |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:49.