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

Shell et commandes GNU Discussion :

KSH : Nombre de jours entre 2 dates


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut KSH : Nombre de jours entre 2 dates
    Bonjour,
    Je suis actuellement en train de développer un script de purge de fichiers.
    Pour cela, j'ai besoin de récupérer le nombre de jours entre 2 dates au format 'yyyymmdd'.
    Je vous savoir s'il existait un moyen simple pour y remédier.

    Merci pour vos réponses

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Algorithmiquement parlant, il n'est pas posible simplement de faire ce que tu demandes, parce que les calculs sur les dates sont très complexes.

    Par contre, ce qui est simple, c'est de calculer la différence entre deux dates au format 'nombre de secondes depuis 1970', puis de calculer le nombre de jours que représente cette différence.
    Je ne pense pas que cela soit faisable simplement en script, en revanche je sais qu'il existe des fonctions simples d'utilisation en C - N'hésites pas à poser des questions si tu as des soucis sur l'algorithme ou le développement en lui-même.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par ripat
    J'ai eu récemment à faire des calculs sur date et heures dans un script bash. La commande GNU date est parfaite et peut beaucoup mais je n'ai pas trouvé comment faire des calcul de différences sur les dates ou heures. Du moins sans le recours de perl. Il y a une belle compilation ici:
    http://www.unix.com/showthread.php?t=13785

    Mais rien en bash pur. Je m'y suis donc mis.
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/bin/bash
     
    # Possibilités classiques de la commande GNU date (mais pas toujours bien documentées)
    dte="2006-10-01 06:55:55"
    echo $dte
     
    # ajouter 2 jours, 1 heures et 5 secondes à la date donnée
    date --date "$dte 2 days 1 hour 5 sec"
     
    # soustraire 3 jours, 5 heures et 10 secondes à la date donnée
    date --date "$dte 3 days 5 hours 10 sec ago"
     
    # soustraire 3 jours, 5 heures et 10 secondes la date d'aujourd'hui
    date --date "now 3 days 5 hours 10 sec ago"
     
     
    # fonctions maison (pour la suite...)
     
    date2stamp () {
    date -u --date "$1" +%s
    }
     
    stamp2date (){
    date -u --date "1970-01-01 $1 sec" "+%Y-%m-%d %T"
    }
     
    dateDiff (){
    case $1 in
    -s) sec=1; shift;;
    -m) sec=60; shift;;
    -h) sec=3600; shift;;
    -d) sec=86400; shift;;
    *) sec=86400;;
    esac
    dte1=$(date2stamp $1)
    dte2=$(date2stamp $2)
    diffSec=$((dte2-dte1))
    if ((diffSec < 0)); then abs=-1; else abs=1; fi
    echo $((diffSec/sec*abs))
    }
     
    # convertir un date en timestamp UNIX
    stamp=$(date2stamp "2006-10-01 15:00")
    echo $stamp
     
    # convertir un timestamp en date/heure
    stamp2date $stamp
     
    # différence entre deux dates
    # -s en sec. -m en min. -h en heures -d ou rien en jours
    dateDiff -s "2006-10-01" "2006-10-32"
    dateDiff -m "2006-10-01" "2006-10-32"
    dateDiff -h "2006-10-01" "2006-10-32"
    dateDiff -d "2006-10-01" "2006-10-32"
    dateDiff "2006-10-01" "2006-10-32"
     
    # nombre de secondes entre deux heures données
    dateDiff -s "17:55" "23:15:07"
    dateDiff -m "17:55" "23:15:07"
    dateDiff -h "17:55" "23:15:07"
     
    # nombre de minutes nous séparant de la fin de l'année
    dateDiff -m "now" "2006-12-31 24:00:00"


    Attention, le format %s de la commande date n'est pas standard. Il est donc possible que mes fonctions ne soient pas portables. A tester.
    extrait de http://www.developpez.net/forums/arc...p/t-21165.html
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

Discussions similaires

  1. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  2. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  3. Nombre de jours entre 2 dates
    Par Delphi-ne dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/10/2005, 23h12
  4. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 15h25
  5. calcule du nombre de jours entre 2 dates
    Par nazimb dans le forum ASP
    Réponses: 4
    Dernier message: 28/09/2004, 15h22

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