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

Linux Discussion :

Calcul de date en script shell


Sujet :

Linux

Vue hybride

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut Calcul de date en script shell
    Bonjour,

    Je cherche à calculer des dates à l'aide d'un script shell.

    J'ai en entrée une date sous la forme dd/mm/AAAA stockée dans une variable

    Je souhaiterais obtenir à partir de cette date
    - la date du premier lundi précédent cette date
    - la date du premier dimanche suivant cette date

    Si quelqu'un peut m'aider...

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    qu'as-tu déjà essayé ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    J'ai essayé de faire des calculs manuels.

    Je récupère le numéro du jour correspondant à la date avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jour=S`date --date=$datesemaine +%u`
    Je fait la différence entre ce numéro de jour et le lundi et le dimanche.
    Ensuite, j'ajoute ou je retire la différence entre le jour en question et le lundi ou le dimanche....


    Le seul souci c'est que dès que je commence à gérer les cas avec un lundi ou un dimanche sur un autre mois, cela commence à être sérieusement compliqué.

    Il existe des commandes toutes faites en Perl, mais je ne peux pas les utiliser.
    Bref, il ne me reste que le Shell.

    Ma question est surtout: existe-t-il une méthode "relativement" simple pour faire cela?

  4. #4
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut avec GNU date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    JS=$(date +%u)
    date -d "$((1-JS)) days"
    date -d "$((7-JS)) days"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    @fransoo

    Merci fransoo pour ta proposition, mais cela ne fonctionne que si on désire faire ces calculs à partir de la date du jour.

    Mais en ce qui me concerne je doit gérer cela avec une date qui n'est pas celle du jour et qui est stockée dans une variable.

  6. #6
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    D="15/08/2010"
    DD="${D:3:3}${D:0:3}${D:6:4}" # pour mettre au format mm/dd/yyyy
    JS=$(date -d $DD +%u)
    date -d "$DD $((1-JS)) days"
    date -d "$DD $((7-JS)) days"
    -------------- EDIT ------------------
    Juste pour le fun, j'ai découvert ça sur GNU date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    date -d "last Monday"
    date -d "next Sunday"
    Mais je n'ai pas réussi en partant d'une date prédéterminée

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

Discussions similaires

  1. Petit Script Shell pour changement de date automatique
    Par 20132014 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 18/06/2013, 13h07
  2. Conversion et comparaison des dates en script shell
    Par sorilazer dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 16/11/2012, 14h51
  3. Script shell - problème avec date
    Par spartiates59 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 18/08/2011, 18h15
  4. Shell KSH calcul de date
    Par fgrassi dans le forum Linux
    Réponses: 5
    Dernier message: 10/08/2009, 14h05
  5. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 09h10

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