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 :

Format de dates


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par d�faut Format de dates
    Bonjour la communaut�,

    Je travaille actuellement sur un site que je compte un jour internationaliser. Afin de pr�parer les bases de mani�re correcte, je suis en r�flexion sur les formats de date. J'ai beau fouiller sur le net, j'ai du mal � trouver une explication claire sur la mani�re de travailler avec les dates en fonction des locales de l'utilisateur.

    J'utilise Datepicker et diff�rents scripts de traitement de dates (ajout de jours � une date, affectation d'une valeur date � un input via Datepicker et via script,...).

    Quelqu'un pourrait me donner une explication sur la voie � suivre ?

    Merci d'avance!

  2. #2
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut


    Je ne travaille plus les dates qu'au format ISO long depuis 2011 (https://www.developpez.net/forums/d1...e/#post5965922 : je vous donne ce lien � titre de r�f�rence historique uniquement).

    Depuis plusieurs ann�es je travaille les dates exclusivement avec moment.js (https://momentjs.com/) et plus rarement avec moment timezone (https://momentjs.com/timezone/)

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
        <script defer src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
        <script defer src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/locale/fr.js"></script>
        <script defer src="https://danielhagnoul.developpez.com/lib/dvjh/dvjhUtilities-1.8.5.js"></script>

    dvjhUtilities-1.8.5.js est un fichier perso voir mon blog : https://www.developpez.net/forums/bl...ties-1-8-5-js/

    Ce fichier contient plusieurs fonctions utiles, dont la class kDvjhDate qui extends l'objet Date, la m�thode toString montre comment j'obtiens le format ISO long � partir de moment.js (le format ISO de Date est moins complet) :

    Code JavaScript : 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
    kDvjhDate = class extends Date {
            constructor(p) {
                if (p) {
                    super(p);
                } else {
                    super();
                }
     
                this.auteur = 'Daniel Hagnoul';
            }
            toString() {
                // format ISO long, dépend de moment.js
                return moment(this).format("YYYY-MM-DDTHH:mm:ss.SSSZZ");
            }
            toInput() {
                return this.toString().split("T")[0];
            }
        },

    Code JavaScript : 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
    window.document.addEventListener('DOMContentLoaded', ev => {
        // le DOM est construit, la page web n'est pas visible
        moment.locale('fr'); // initialisation de moment.js en FR
        console.log(`DOM ready : ${new kDvjhDate()}`); // utilisation de kDvjhDate
     
        // début code du test
     
        // fin code du test
     
    }, {
        capture: false,
        passive: true,
        once: false
    });
     
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
        console.log(`Window load : ${new kDvjhDate()}`); // utilisation de kDvjhDate
     
     
        // début code du test
     
        // fin code du test
     
        kIDUnique();
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Expert confirm�
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Ao�t 2003
    Messages
    3 684
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activit� : danseur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 3 684
    Par d�faut
    Bonjour,

    D�but de piste: penche-toi sur le constructeur Intl.DateTimeFormat;

  4. #4
    Membre �prouv�
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par d�faut
    Merci � vous deux pour ces pistes de r�flexion. Je vais m'atteler � cela aujourd'hui.

    Donc, si je comprends bien, je devrais travailler avec moment.js puis formater les dates en fonction des locales de l'utilisateur avec Intl.DateTimeFormat...

  5. #5
    Membre �prouv�
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par d�faut
    Bon, je me suis attard� sur moment.js. Voici donc la mani�re dont je l'utilise avec datePicker et dans un script afin d'afficher un format de date correspondant � la locale du navigateur :

    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
     
    //Use a calendar for the start and end dates of periods
     
        $([document]).on('focus', 'input.js-datepicker-period',function() {
     
            $(".js-datepicker-period").datepicker({
                viewMode: "months",
                weekStart: 1,
                daysOfWeekHighlighted: "6,0",
                autoclose: true,
                todayHighlight: true,
                startDate: '-0m',
                endDate:'+2y',
                format: 'yyyy-mm-dd'
            });
     
        });
     
        $([document]).on('change', 'input.js-datepicker-period',function() {
     
            $(this).val(moment($(this).val(), 'YYYY-MM-DD').locale(navigator.language).format('L'));
     
        });
    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
     
    ...
        if (index == 1) 
        {
     
            var today = moment(new Date()).locale(navigator.language).format('L');
     
            $('#periods_advert_periods_1_start').val(today);
     
        }
        else
        {
            var idPreviousDate = 'periods_advert_periods_'.concat(index - 1).concat('_end');
            var previousDate = $('#'.concat(idPreviousDate)).val();
     
            startDate = moment(previousDate, "DD/MM/YYYY").add(1, 'days');
            $('#periods_advert_periods_'.concat(index).concat('_start')).val(startDate.locale(navigator.language).format('L'));
     
        }
    ...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 01/06/2004, 17h32
  2. D�tecter le format de date au d�marrage
    Par stigma dans le forum Access
    R�ponses: 2
    Dernier message: 20/02/2004, 11h04
  3. R�ponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Probl�me de Format de date
    Par titititi007 dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 18/06/2003, 08h19
  5. R�ponses: 3
    Dernier message: 06/05/2002, 18h24

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