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

Unix Discussion :

diff entre deux dates en mois


Sujet :

Unix

  1. #1
    Nouveau membre du Club
    diff entre deux dates en mois
    Bonjour ,

    Y a t'il un moyen d'afficher la différence entre deux dates en mois sous Unix ? Merci de votre aide

  2. #2
    Expert éminent sénior
    Bonjour

    Pour toi, qu'est-ce qu'un mois ?
    Quelle est la différence entre 2 février et 1er mars ? 1 mois ? 0 mois ?

    J'ai bien peur qu'il te faille calculer à la main. (avec un script)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert éminent sénior
    Quelques pistes dans une console :

    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
    $ d1=$(date -d '03/01/2019' +%s)                                                                                                                                                                                                                                
    $ d2=$(date -d '02/02/2019' +%s)
    $ if [ "$d2" -lt "$d1"  ]; then d3=$d2;d2=$d1;d1=$d3;fi # d1 est alors le 2 février
    $ m=0;while test $(date -d "1970/01/01 $(($m+1)) months $d1 seconds" +%s) -lt $(date -d "@$d2" +%s); do m=$(($m+1));done
    $ echo $m
    0
    $ d2=$(date -d '02/02/2020' +%s)
    $ m=0;while test $(date -d "1970/01/01 $(($m+1)) months $d1 seconds" +%s) -lt $(date -d "@$d2" +%s); do m=$(($m+1));done
    $ echo $m
    12
    $ d2=$(date -d '03/02/2020' +%s)
    $ m=0;while test $(date -d "1970/01/01 $(($m+1)) months $d1 seconds" +%s) -lt $(date -d "@$d2" +%s); do m=$(($m+1));done
    $ echo $m
    12
    $ d2=$(date -d '01/02/2020' +%s)
    $ m=0;while test $(date -d "1970/01/01 $(($m+1)) months $d1 seconds" +%s) -lt $(date -d "@$d2" +%s); do m=$(($m+1));done
    $ echo $m
    11
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.