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

JavaScript Discussion :

Optimiser fonction UTC ->Locale, formater ISO


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut Optimiser fonction UTC ->Locale, formater ISO
    Bonjour,
    J'extrais des données d'un serveur pour les afficher dans une popup sous forme de tableau.

    La date et l'heure sont sous ce format 2017-12-29 16:00 UTC, lors de la création du tableau dans la popup j'aimerais qu'il me convertisse en local mais en gardant le formatage ISO ex :
    La fonction suivante fait le job

    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
    var d_utc = [2017,11,29,16,0];
     
    function CltDTZ (d_utc) {
    var d = new Date(Date.UTC.apply(null, d_utc));
    var o = -d.getTimezoneOffset(), t = Math.abs(o);
    var s = (o < 0) ? "-" : "+";
    var h = Math.trunc(t) / 60;
    var mh = (h == 0) ? "" : s + h;
    var m = t % 60;
    var hm = (m == 0) ? mh : s + h + ':' + m;
    var Y = d.getFullYear();
    var M = ("0"+ (d.getMonth() + 1)).slice(-2);
    var D = ("0" + d.getDate()).slice(-2);
    var HH = ("0" + d.getHours()).slice(-2);
    var MM = ("0" + d.getMinutes()).slice(-2);
    return Y + "-" + M + "-" + D + " " + HH + ":" + MM + " " + "UTC" + hm;
    };
    alert (CltDTZ(d_utc)); // 2017-12-29 17:00 UTC+1
    J'aimerais savoir s'il est possible d'optimiser le code avec les constructeurs disponibles qui pourrait me générer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateTimeUTC : 2017-12-29T16:00:00.000Z // donné par le serveur 
    =>> Traitement via les constructeurs disponibles
    DateTimeLOC : 2017-12-29T17:00:00.000+01:00 // ex:+1 pour la FR en ce moment
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Qu'est-ce que tu entends par "constructeurs" ?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Je viens de regarder ton autre fil...

    Je ne comprends pas pourquoi tu parts de la date du serveur pour afficher la date en local chez le client...

    Pourquoi ne pas afficher directement la date en locale chez le client ? Je veux dire si tu affiches la date coté client avec du code JS il affichera la date en locale indépendamment de la date du serveur puisque ce code est exécuté coté client, non ?

    A moins que la date du serveur ne soit pas la date en cours mais n'importe quelle date ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    A moins que la date du serveur ne soit pas la date en cours mais n'importe quelle date ?
    Oui les dates sont systématiquement des Dates et Heures futures, je n'ai pas accès au serveur

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ah ok, je pense que ces fonctions sont des méthodes de l'objet...

    Je crois (à confirmer par les autres) qu'on peut avec les prototypes ajouter une méthode à un objet déjà existant mais je ne suis pas sûr que ce soit plus optimisé comme ça...

    Par contre c'est vrai que je trouve que cette façon de faire appelle à une fonction est pratique...

  6. #6
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Essaie ça. Ca peut peut être te donner des idées.

    Je sépare les éléments de la date par des tirets (-)

    Code php : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    $array   = array();
    $curTime = time();
    for ($i=0;$i<=23;$i++)
    {
     $array[$i] = gmdate("Y-m-d-H-i",$curTime + ($i * 3600));
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <script>
    var UTC_Time = new Array();
    <?php
     foreach ($array as $key => $value)
     {
      list($annee,$mois,$jour,$heure,$minute) = explode('-',$value);
      print "UTC_Time[$key] = [$annee,".($mois-1).",$jour,$heure,$minute];".PHP_EOL;
     }
    ?>
    var OptionValue = new Array();
    <?php
     foreach ($array as $key => $value)
     {
      list($annee,$mois,$jour,$heure,$minute) = explode('-',$value);
      print "OptionValue[$key] = '$value';".PHP_EOL;
     }
    ?>
    function remplirDT()
    {
     var html = "";
     for (var i=0;i<23;i++)
     {
      var curDT  = new Date(Date.UTC(UTC_Time[i][0], UTC_Time[i][1], UTC_Time[i][2], UTC_Time[i][3], UTC_Time[i][4]));
      var curOpt = "<option value='"+OptionValue[i]+"'>"+curDT+"</option>";
      html       = html + curOpt;
     
     }
     document.getElementById('dt').innerHTML = html;
    }
    </script>
    </head>
    <body onload="remplirDT()">
    <select id="dt">
    </select>
    </body>
    </html>

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    J'appelle "constructeurs" les fonctions universelles définies comme .toISOString() par exemple
    ( Je sens que je vais me faire taper sur les doigts vu que ça s'appelle pas comme ça )
    Voila la page que je consulte
    https://www.w3schools.com/jsref/jsref_obj_date.asp

Discussions similaires

  1. Optimisation fonction MAX
    Par AurelGTS dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/05/2007, 19h26
  2. Optimisation : fonction vide ou test
    Par bolhrak dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2006, 19h31
  3. [Mail] Tester la fonction mail en local
    Par fk04 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 10h52
  4. [TSQL] Optimisation fonction levenshtein
    Par Adi81 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/03/2006, 15h22
  5. [Optimisation][Fonction]calcul du nombre de jours ...
    Par m-mas dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/10/2005, 14h39

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