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

Collection et Stream Java Discussion :

Journée de 26 heures


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut Journée de 26 heures
    Bonjour,
    désolé si cette question a déjà été abordée, mais je cherche depuis un moment et ne trouve pas ce que je veux.
    Je souhaite pouvoir créer des journées de 26 heures. J'ai identifié deux possibilités :
    - modifier le "non lenient" mode pour qu'il ne lève pas d'exception quand on dépasse les "bornes"
    - modifier les bornes

    Malheureusement, en explorant le code de la classe Calendar (dont une partie est compilée et inaccessible a priori) je n'ai pas réussi à trouver où effectuer l'une ou l'autre des ces modifications. Je ne suis pas familier avec les opérations "bit à bit", est-ce que celle-ci pourrait être liée à mon problème ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final static int HOUR_OF_DAY_MASK	= (1 << HOUR_OF_DAY);
    Merci pour votre aide.

    Nicolas

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 973
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 973
    Par défaut
    Lai,

    ???

    Quelle peut bien être l'utilité de cette démarche ?

    Augmenter le temps de travail de tes employés ?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'avoue que l'idée même me semble incroyable... j'ai hâte d'avoir la justification d'une telle demande...

    A priori, je dirais que ce n'est pas un champ Time dont tu as besoin mais d'autre chose.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Haha,
    non en fait je bosse sur un logiciel pour un prestataire de la SNCF, et les horaires des trains d'une journée sont définis de 3h à 26h.
    Je pourrais me débrouiller pour décaler les horaires (-3h partout) et ne les changer qu'à l'affichage, mais j'aimerais vraiment pouvoir re-définir les paramètres du Calendar.

    Pas d'idée ?

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par fleshandbone Voir le message
    Haha,
    non en fait je bosse sur un logiciel pour un prestataire de la SNCF, et les horaires des trains d'une journée sont définis de 3h à 26h.

    Qu'est-ce qui a pu justifier ça ???

    Je pourrais me débrouiller pour décaler les horaires (-3h partout) et ne les changer qu'à l'affichage, mais j'aimerais vraiment pouvoir re-définir les paramètres du Calendar.
    Modifier une classe qui gère le temps pour lui dire que les jours font 26 heures ne me semble pas être une bonne idée. J'imagine que là, les horaires sont stockés en base en chaînes de caractères ; mais si tu crées une classe qui considère que les jours ont 26 heures, toutes les fonctions qui te donnent le timestamp actuel seront largement faussés (eh oui, ça se compte en millisecondes après le 1er Janvier 1970 ... À vue de nez, avec ton calendrier à 26 heures, on est en 2007, par exemple

    Le plus simple à mon avis c'est de faire le décalage dès le parsing (ou dès la conversion en date). Et ensuite, utiliser des objets normaux.
    "SNCF, à nous de vous faire préférer les surcharges étranges de Calendar ... ou pas."

  6. #6
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Le plus simple à mon avis c'est de faire le décalage dès le parsing (ou dès la conversion en date). Et ensuite, utiliser des objets normaux.
    Effectivement, les timestamp risquent de poser problème, je n'avais pas pensé à ça. Donc tu penses qu'il vaut mieux que j'avance l'horaire des trains de 3h au moment de l'import et du stockage dans la base, et qu'à l'affichage je leur mette automatiquement "+3" heures, c'est ça ?

    Je ne sais pas ce qui a pu justifier ça : qu'on considère qu'un train de 0h30 soit du lundi soir ou du mardi matin ne change pas grand chose, j'en conviens. C'est peut être pour une question d'organisation et de paye du personnel.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fleshandbone Voir le message
    Je ne sais pas ce qui a pu justifier ça : qu'on considère qu'un train de 0h30 soit du lundi soir ou du mardi matin ne change pas grand chose, j'en conviens. C'est peut être pour une question d'organisation et de paye du personnel.
    Ben, une mauvaise analyse me parait évidente...

    Pour ton problème, dans quel type de champ est stocké ton information ?
    Est ce qu'il y a des valeurs spéciales pour ce champ ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    dans ma base (sqlite) c'est un champ TIME
    dans mon objet Java c'est un Calendar

    pas de contraintes particulières, à part celles inhérentes à ces types de données.

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Bien que je trouve l'idée stupide, je me permet une solution "a la con"

    Décaler le calendar dans le passé en changeant la timezone

    Ca risque de coincer un peu sur les heures d'hiver/heures d'été, mais avec un journée de 26heure, on est plus à une approximation près.


    Blague à part. Tu parle de train qui partent le mardi matin 0h50 par exemple qui doivent être affiché au lundi. Ok, mais ce qui n'a pas de sens c'est de vouloir utiliser un objet destiné aux timestamp pour ça. T'en a rien à faire de savoir qu'on est en septembre ou en 2011 ou qu'il est 5 secondes,32 centièmes il me semble?

    Dans ce cas, je me contenterais de créer mon objet "Horaire" avec un champ heure, minutes, et éventuellement jour/moi si t'as besoin de gérer cette information. Et je ne toucherais pas à Calendar ou Date.

  10. #10
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Oui tu as raison, c'est ce qui aurait dû être fait : un champ heure, un champ minute et basta. Mais lors de l'analyse, personne n'a soulevé le problème (et je dois bien reconnaître que je ne l'ai pas détecté non plus ..).
    Maintenant, ça devient un peu chaud ..
    Un ami m'a suggéré la solution des timezone aussi, mais bon. Je me demande bien comment ils font à la sncf

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    768
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 768
    Par défaut
    A oui j'ai compris, les journées ne font pas vraiment 26h en fait.

    C'est juste une sorte d'offset de 3h à 26h.

    Moi j'utiliserai le Calendar tel quel car il est bien pratique et j'ajouterai une classe qui traduirait le Calendar en CalendarSNCF et du CalendarSNCF en Calendar.

    Si tu commences à surcharger Calendar, déjà tu vas créer une adhérence à une classe du JDK qui peut évoluer et tu vas forcement oublier des choses.

    Bon courage,

  12. #12
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Merci pour vos réponses en tous cas

  13. #13
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Mais au delà du problème du timestamp (et des jugements de valeurs des uns et des autres), et bien que d'autres solutions existent, je n'aime pas rester sur ma faim bidouilleuse : y'aurait-il un moyen de redéfinir le nombre d'heures dans une journée en Java ?

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par fleshandbone Voir le message
    y'aurait-il un moyen de redéfinir le nombre d'heures dans une journée en Java ?
    Non. Les calendriers Gregorien et Julien n'ont jamais eu de journée de 26h, donc les classes ne sont pas du tout prévues pour ça.

  15. #15
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Oui, je comprends, mais je me demandais naïvement si il était possible de modifier l'objet pour lui dire "dans une journée il y a 26 heures", ou si c'était lié au système etc

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ca resterais plus rapide et plus stable pour vous de recoder votre propre calendar / DateFormat / Date dans ce cas

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

Discussions similaires

  1. Soustraire des heures a cheval sur deux journées
    Par facteur dans le forum Excel
    Réponses: 7
    Dernier message: 07/03/2022, 13h59
  2. Requête : premiere heure d'une journée
    Par lordmyko dans le forum Développement
    Réponses: 5
    Dernier message: 15/02/2010, 12h09
  3. Heure de la journée script correct ?
    Par dede-sniper dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/09/2008, 09h51
  4. lancement procedure-trigger à une heure donnée de la journée?
    Par bibi_forever dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/05/2007, 16h52
  5. Index du quart d'heure de la journée ?
    Par [ZiP] dans le forum Delphi
    Réponses: 4
    Dernier message: 04/04/2007, 16h01

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