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

Servlets/JSP Java Discussion :

Insérer dynamiquement une date UTC Java, dans du code JavaScript


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut Insérer dynamiquement une date UTC Java, dans du code JavaScript
    Bonjour à tous,

    Je suis en train de créer des graphes HighChart JavaScript et j'aimerais rendre la date dans "pointStart: Date UTC" dynamique, au lieu de la saisir à la main à chaque graphe.

    Voici d'abord un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                series: [{
                    type: 'area',
                    name: 'DEBIT : ',
                    pointInterval: 60 * 1000,
                    pointStart: Date.UTC(2013, 5, 06, 16, 18, 39),   //yyyy=2014,MM= 5(juin), dd=06, hh= 16,mm=18, SS=39
                    data: <%= com.telma.reportgraphe.Utils.getExtractDebits(sourceFile) %>   //sourceFile est obtenu dynamiquement
                }]
    ....
    Le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date.UTC(2013, 5, 06, 16, 18, 39),   //yyyy=2014,MM= 5(juin), dd=06, hh= 16,mm=18, SS=39
    fonctionne très bien avec un seul fichier.

    Voici un extrait:
    06/04/2013 16:18:39 9757
    06/04/2013 16:20:39 6833
    06/04/2013 16:22:39 18897
    06/04/2013 16:24:39 2891
    06/04/2013 16:26:40 5213
    06/04/2013 16:28:40 4095
    06/04/2013 16:30:41 16372
    06/04/2013 16:32:40 27334
    06/04/2013 16:34:42 8535
    06/04/2013 16:36:42 14137
    06/04/2013 16:38:41 19516
    06/04/2013 16:40:41 5276
    mais avec un autre fichier, il faudrait modifier Date.UTC(2013, 5, 06, 16, 18, 39) sinon le graphe sera toujours en fonction du 6 juin 2013...

    Je voudrais donc le faire dynamiquement. J'ai pensé le faire avec un split de la date et de l'heure, puis l'insérer un par un dans un tableau, pour obtenir au final Date.UTC(2013, 5, 06, 16, 18, 39).

    Quelqu'un saurait-il m'indiquer si c'est faisable, ou sinon comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    SimpleDateFormat te permet de parser un date dans une format particulier. Ensuite, un deuxième SimpleDateFormat peut être utiliser pour la formater dans le format que tu désire. SimpleDateFormat a une méthode setTimeZone, donc tu peux l'utiliser pour changer de timezone entre tes deux format, si j'ai bien compris ce que tu cherche, parce que c'est tout sauf clair .

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 562
    Points : 21 625
    Points
    21 625
    Par défaut
    En fait la fonction JavaScript Date.UTC() produit un simple entier qui représente un nombre de millisecondes depuis Epoch, UTC.

    Vu que JavaScript et Java utilisent le même Epoch (1er Janvier 1970 à minuit) ; et que la méthode getTime() de Date renvoie un long qui représente exactement la même chose, la conversion Date Java -> date JavaScript UTC se fait avec un simple getTime().
    Reste à faire la conversion String Java -> Date Java avec SimpleDateFormat. (Le petit problème étant de savoir si la String est exprimée dans une time zone précise, et si oui, laquelle.)

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    Bonjour à tous et merci beaucoup de m'avoir répondu.

    J'ai créé une méthode qui va créer une vector<Date> , ci après une partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int year = cal.get(Calendar.YEAR);
    					int month = cal.get(Calendar.MONTH);
    					int day = cal.get(Calendar.DAY_OF_MONTH);
    					int heure = cal.get(Calendar.HOUR);
    					int minute = cal.get(Calendar.MINUTE);
    					int seconde = cal.get(Calendar.SECOND);
    					retdate.add(new Dategraphereport(year,month,day,heure,minute,seconde));
    dans jsp, je voudrai faire un boucle for, mais le for ne marche pas dans la balise script, donc je l'avais mis extérieur, et ça fait planter firefox.
    dans mon script, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <script type="text/javascript">
    $(function () {
            $('#container').highcharts({
                chart: {
                    zoomType: 'x'
                },
                title: {
                    text: 'RAPPORT SUR LE DEBIT CONSOMME DURANT LE MOIS D\'AVRIL 2013'
                },
                subtitle: {
                    text: document.ontouchstart === undefined ?
                        'Cliquer et glisser sur les points de valeur pour zoomer' : 
                        'Pinch the chart to zoom in'
                },
    .......
     
    series: [{
                    type: 'area',
                    name: 'DEBIT : ',
                    pointInterval: 60 * 1000,
                    pointStart: Date.UTC(2013, 3, 06, 16, 18, 39),
                    data: <%= com.telma.reporting.debit.Utils.getExtractDebits(path+element_select) %>
                }]
            });
        });
        
                    </script>
    J'aimerai le transformer en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ....
     series: [{
                    type: 'area',
                    name: 'DEBIT : ',
                    pointInterval: 60 * 1000,
                    pointStart: Date.UTC(<%= listdate.get(i).getYear()%>,<%= listdate.get(i).getMonth() %>,<%= listdate.get(i).getDay()%>,<%= listdate.get(i).getHour()%>,<%= listdate.get(i).getMinute()%>,<%= listdate.get(i).getSecond()%>),
                    data: <%= com.telma.reporting.debit.Utils.getExtractDebits(path+element_select) %>
                }]
    ....
    Je n'ai aucune idée où devrais-je mettre le boucle for pour que ça donnerai ni d'erreur ni plantage du navigateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    listdate = u.getdatehourmin(path+element_select);
        			for(int i =0; i<listdate.size();i++){
    je travaille sur ça là et je suis bloquée, je ne trouve pas encore de solution,
    j'ai besoin de votre aide svp, guides moi un peu les amis.
    Mmerci bcp,

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Comme la fait remarquer thelvin, nul besoin de formatter ta date. Il suffit d'envoyer le résultat de Date.getTime()

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    ah ok,
    mais en fait je n'ai plus converti la date, j'ai essayé avec i=2, comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    series: [{
                    type: 'area',
                    name: 'DEBIT : ',
                    pointInterval: 60 * 1000,
                    pointStart: Date.UTC(<%= listdate.get(2).getYear()%>, <%= listdate.get(2).getMonth()%>, <%= listdate.get(2).getDay()%>,<%= listdate.get(2).getHour()%>,<%= listdate.get(2).getMinute()%>,<%= listdate.get(2).getSecond()%>),
                    data: <%= com.telma.reporting.debit.Utils.getExtractDebits(path+element_select) %>
                }]
    ça marche très bien, mais c'est ce que je voudrais vous demander c'est comment je vais le faire avec i, c à d utiliser le boucle for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i =0; i<listdate.size();i++){
    ...
    je ne sais pas comment et où je vais mettre ce boucle si on ne peut pas le mettre dans le script,
    pourriez vous m'expliquer svp,
    merci

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    En utilisant soit la JSTL, soit tu inclus ton "for-each" avec <% for (...) {%> sans oublier de fermer le bloc après la boucle.

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    d'accord, j'ai utilisé jsp, et j'ai alors essayé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     series: [{
                    type: 'area',
                    name: 'DEBIT : ',
                    pointInterval: 60 * 1000,
                    pointStart: Date.UTC(<%for(int i =0; i<listdate.size();i++){%><%= listdate.get(i).getYear()%><%}%>, <%= listdate.get(2).getMonth()%>, <%= listdate.get(2).getDay()%>,<%= listdate.get(2).getHour()%>,<%= listdate.get(2).getMinute()%>,<%= listdate.get(2).getSecond()%>),
                    data: <%= com.telma.reporting.debit.Utils.getExtractDebits(path+element_select) %>
                }]
    et rien ne s'affiche dans l'interface, j'obtient l'interface sans erreur mais quand je clic sur un bouton je n'obtient pas de graphe, on est presque.
    Encore besoin d'un peu d'aide svp, pourquoi on n'obtient pas de date avec cela <%for(int i =0; i<listdate.size();i++){%><%= listdate.get(i).getYear()%><%}%>

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut
    voila, ça marche, j'ai commis une erreur et voilà ça marche avec le même code, je n'ai pas besoin du boucle en fait,
    je vous remercie beaucoup, vous m'avez aider les amis, bon je vais marquer ça comme résolu

    a plus

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

Discussions similaires

  1. Insérer dynamiquement une Image dans un rapport Crystal Report
    Par arnaudjol dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 06/01/2017, 12h09
  2. Réponses: 0
    Dernier message: 10/12/2007, 17h42
  3. Réponses: 4
    Dernier message: 02/11/2005, 16h24
  4. Réponses: 5
    Dernier message: 19/10/2005, 14h56
  5. [C#]Passer une date en paramètre dans Crystal Report
    Par choupinette dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/08/2005, 09h59

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