IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Utilisation de Date avec Timer.schedule


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 59
    Points
    59
    Par défaut Utilisation de Date avec Timer.schedule
    Bonjour à tous.
    Comme indiquer dans le titre, je veux lancer une tâche à une heure donnée que l'utilisateur doit saisir au format suivant: HH:MM. Et voici comment je m'y prend:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SimpleDateFormat form = new SimpleDateFormat("MM:HH");
    				form.setTimeZone(TimeZone.getTimeZone("GMT"));
     
    				try {
    					Date d = form.parse(dateField.getText());
    					System.out.println(d);
    					Timer t = new Timer();
    					tlv = new Test(fileField.getText(), siteField.getText(), numctField.getText());				
    					t.schedule(tlv, d);
    				} catch (ParseException e) {
    					e.printStackTrace();
    				}
    Mais chaque que lance il s'exécute instantanément. J'aimerai qu'il s'exécute à l'heure indiquer dans le champ "dateField". Merci pour vos contribution.

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 59
    Points
    59
    Par défaut rectif
    Rectif: à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat form = new SimpleDateFormat("MM:HH");
    lisez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat form = new SimpleDateFormat("HH:MM");

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    La classe Date ne s'appelle pas Time. Elle s'appelle Date. Elle ne représente pas bien l'heure. Elle représente la date et l'heure. (Et du coup elle devrait s'appeller Timestamp ou DateTime, mais elle s'appelle Date. Faisons avec.)

    Du coup, quand tu parses au format "HH:MM" tu ne récupères que l'heure, pas la date. En l'absence de date, celle par défaut est celle d'Epoch, le 1er Janvier 1970. Donc tu es en train de schedule ton timer pour qu'il démarre en 1970. Vu que c'est dans le passé, il pense qu'il a loupé la date fatidique et démarre immédiatement.

    Ah, au fait : MM c'est le mois. Pour les minutes c'est mm.

    Solution : il faut te débrouiller pour ajouter que c'est à l'heure indiquée de la journée en cours, qu'il faut démarrer. Et en fait, c'est assez compliqué.
    Deux solutions :
    #1 - Tu écris la Date en cours au format yyyy/MM/dd avec un SimpleDateFormat, tu ajoutes ça à ton info HH:mm, et tu parses la Date au format yyyy/MM/dd HH:mm

    #2 - Tu crées un new GregorianCalendar. Par défaut ils sont initialisés à la date et l'heure en cours. Tu mets les secondes et les millisecondes à zéro.
    Tu split() ta chaîne HH:mm sur le : . Tu parses le premier nombre, et tu t'en sers pour régler l'heure du calendar. Tu fais pareil avec le deuxième nombre, les minutes.
    Ah, et si ce n'était pas une erreur, pense à mettre le calendar en timezone GMT.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 59
    Points
    59
    Par défaut
    Je vous remercie thelvin, votre explication a été primordiale. J'ai choisi la 2ème méthode et je l'ai adaptée à ce que je voulais. Encore une fois merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Calcul répété avec utilisation de Date
    Par toniob44 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/01/2014, 20h04
  2. Réponses: 2
    Dernier message: 21/09/2009, 14h20
  3. Réponses: 1
    Dernier message: 29/07/2008, 15h24
  4. [PEAR] Date avec utilisation de Spreadsheet excel writer
    Par xianxian620 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/06/2008, 11h03
  5. [MySQL]Trigger avec condition utilisant la date du jour
    Par Irish dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/12/2006, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo