Temps actuel amélioré

Contenu du snippet

Ce code permet d'obtenir :
- le jour de la semaine;
- le jour;
- le mois;
- l'année;
- l'heure;
- les minutes;
- les secondes;
- un javax.swing.Timer qui appelle une méthode à chaque seconde (voir commentaires et exemple).

Source / Exemple :


import java.util.*;
	import java.awt.event.*;
	import java.lang.reflect.*;
	
	public class CurrentTime {
		
		/********* EXEMPLE ******************************************
		class la_classe {
			public la_classe {
				timer = (new CurrentTime()).watchTime(this,"nom_de_methode");
			}
			
			public void nom_de_methode(Object o) {
				String js = CurrentTime.parseWatchTimeResult(o,CurrentTime.WEEK_DAY);
				String j = CurrentTime.parseWatchTimeResult(o,CurrentTime.DAY);
				String mo = CurrentTime.parseWatchTimeResult(o,CurrentTime.MONTH);
				String a = CurrentTime.parseWatchTimeResult(o,CurrentTime.YEAR);
				String h = CurrentTime.parseWatchTimeResult(o,CurrentTime.HEURE);
				String m = CurrentTime.parseWatchTimeResult(o,CurrentTime.MIN);
				String s = CurrentTime.parseWatchTimeResult(o,CurrentTime.SEC);
				String ampm = CurrentTime.parseWatchTimeResult(o,CurrentTime.AM_PM);
				
				System.out.println(js+" le "+j+" "+mo+", "+a+" - "+h+":"+m+":"+s+" "+ampm);
			}
			
			javax.swing.Timer timer = null;
		}

                                                                                                                      • /
public CurrentTime() { } // obtenir le jour de la semaine (ex: lundi, mardi, etc) public String getJourSemaine() { GregorianCalendar c = new GregorianCalendar(); return parseJourSemaine(c.get(WEEK_DAY)); } // obtenir le jour du mois public int getJour() { GregorianCalendar c = new GregorianCalendar(); return c.get(DAY); } // obtenir le mois (ex: janvier, février, etc) public String getMois() { GregorianCalendar c = new GregorianCalendar(); return parseMois(c.get(MONTH)); } // obtenir l'année public int getAnnee() { GregorianCalendar c = new GregorianCalendar(); return c.get(YEAR); } // obtenir l'heure public int getHeure() { GregorianCalendar c = new GregorianCalendar(); int result = c.get(HEURE); if (getAMPM().equals("PM")) result += 12; return result; } // obtenir le nombre de minutes public int getMinutes() { GregorianCalendar c = new GregorianCalendar(); return c.get(MIN); } // obtenir le nombre de secondes public int getSecondes() { GregorianCalendar c = new GregorianCalendar(); return c.get(SEC); } // obtenir AM si c'est le matin, sinon PM public String getAMPM() { GregorianCalendar c = new GregorianCalendar(); return parseAMPM(c.get(AM_PM)); } /* appeller à chaque seconde une méthode choisi, dans une classe choisi, et envoyer dans l'argument de la méthode le temps. utilisez parseWatchTimeResult pour savoir ce que l'objet "Object" de la méthode contient. Pour un exemple, voir la méthode "main". arguments: - Object o : la classe contenant la méthode à appeller - String methodToCall : la méthode à appeller à chaque seconde. format de la méthode: public void methodeToCall(Object obj) {} retourne un javax.swing.Timer
  • /
public javax.swing.Timer watchTime(final Object o,final String methodToCall) { javax.swing.Timer timer = null; ActionListener timerTask = new ActionListener() { public void actionPerformed(ActionEvent evt) { try { Class[] paramTypes = new Class[] {Object.class}; Method method = o.getClass().getMethod(methodToCall, paramTypes); Object[] arguments = new Object[]{getJourSemaine()+"$"+getJour()+"|"+getMois()+"%"+getAnnee()+"&"+getHeure()+":"+getMinutes()+":"+getSecondes()+"#"+getAMPM()}; method.invoke(o, arguments); } catch (Exception e) { System.err.println(e); } } }; timer = new javax.swing.Timer(1000,timerTask); // 1000 milliseconde = 1 seconde timer.start(); return timer; } /* obtenir le résultat voulue dans la méthode qui est appellé à chaque seconde dans watchTime(Object,String). arguments: - Object o: l'objet de l'argument de methodToCall - int field: un des fields (le choix est situé en bas de la classe CurrentTime)
  • /
public static String parseWatchTimeResult(Object o,int field) { String s = (String)o; if (field == WEEK_DAY) s = s.substring(0,s.indexOf("$")); if (field == DAY) s = s.substring(s.indexOf("$")+1,s.indexOf("|")); if (field == MONTH) s = s.substring(s.indexOf("|")+1,s.indexOf("%")); if (field == YEAR) s = s.substring(s.indexOf("%")+1,s.indexOf("&")); if (field == HEURE) { s = s.substring(s.indexOf("&")+1,s.indexOf(":")); if (Integer.parseInt(s) < 10) s = "0"+s; } if (field == MIN) { s = s.substring(s.indexOf(":")+1,s.lastIndexOf(":")); if (Integer.parseInt(s) < 10) s = "0"+s; } if (field == SEC) { s = s.substring(s.lastIndexOf(":")+1,s.indexOf("#")); if (Integer.parseInt(s) < 10) s = "0"+s; } if (field == AM_PM) s = s.substring(s.indexOf("#")+1,s.length()); return s; } /*******************************************************/ /**** PRIVATES *****************************************/ /*******************************************************/ // obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.AM_PM) private static String parseAMPM(int i) { if (i == 0) return "AM"; return "PM"; } // obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.DAY_OF_WEEK) private static String parseJourSemaine(int i) { if (i == GregorianCalendar.MONDAY) return "Lundi"; if (i == GregorianCalendar.TUESDAY) return "Mardi"; if (i == GregorianCalendar.WEDNESDAY) return "Mercredi"; if (i == GregorianCalendar.THURSDAY) return "Jeudi"; if (i == GregorianCalendar.FRIDAY) return "Vendredi"; if (i == GregorianCalendar.SATURDAY) return "Samedi"; if (i == GregorianCalendar.SUNDAY) return "Dimanche"; return "<parse error: debug id "+i+">"; } // obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.MONTH) private static String parseMois(int i) { if (i == GregorianCalendar.JANUARY) return "Janvier"; if (i == GregorianCalendar.FEBRUARY) return "Février"; if (i == GregorianCalendar.MARCH) return "Mars"; if (i == GregorianCalendar.APRIL) return "Avril"; if (i == GregorianCalendar.MAY) return "Mai"; if (i == GregorianCalendar.JUNE) return "Juin"; if (i == GregorianCalendar.JULY) return "Juillet"; if (i == GregorianCalendar.AUGUST) return "Août"; if (i == GregorianCalendar.SEPTEMBER) return "Septembre"; if (i == GregorianCalendar.OCTOBER) return "Octobre"; if (i == GregorianCalendar.NOVEMBER) return "Novembre"; if (i == GregorianCalendar.DECEMBER) return "Décembre"; return "<parse error: debug id "+i+">"; } // les fields public static final int WEEK_DAY = GregorianCalendar.DAY_OF_WEEK; public static final int DAY = GregorianCalendar.DAY_OF_MONTH; public static final int MONTH = GregorianCalendar.MONTH; public static final int YEAR = GregorianCalendar.YEAR; public static final int HEURE = GregorianCalendar.HOUR; public static final int MIN = GregorianCalendar.MINUTE; public static final int SEC = GregorianCalendar.SECOND; public static final int AM_PM = GregorianCalendar.AM_PM; }

Conclusion :


si vous voyez un truc qui cloche, dit le ! ^^

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.