Temps actuel amélioré

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 502 fois - Téléchargée 19 fois

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

Ajouter un commentaire

Commentaires

Messages postés
34
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
8 juillet 2010

Effectivement j'ai le même problème... Intégrer l'heure et la date dans une Frame par le biais d'un JLabel ou JTextField...

Merci
Messages postés
2
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
14 mai 2008

bonjour
je veux integré cette class dans un frame exactement dans un textfield, mais jai eu quelque pobleme.qu est ce que vous suggere
merci
djo
Messages postés
7
Date d'inscription
mardi 21 février 2006
Statut
Membre
Dernière intervention
23 octobre 2008

bonjour
je veux stocker cette date dans la base de donées j'ais utiliser la fonctions GetTime qui rend l'annee-le mois-la date heure:minute:seconde mais j'avais des problèmes.
la date est stocker de cette forme dans la base de donnee "l'annee-le mois-la date heure:minute:seconde " dans un seul champs
comment puis-je la stocker via votre programme
MERCI!

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.