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

Unix Discussion :

Conversion d'une date en quantieme


Sujet :

Unix

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    September 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : September 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut Conversion d'une date en quantieme
    Bonjour

    Dans un shell Unix, j'ai en paramètre deux dates saisies au format aaaammjj.
    Je souhaiterais transformer ces dates en quantieme.

    (malgré mes recherches sur internet, je n'ai pu trouver de réponse).

    Existe-t-il une commande ?
    Sinon, quel type de script peut-on exécuter pour réaliser cette conversion ?

    Merci par avance pour vos contributions.

    Dvi

    (info : version Unix AIX 6.11)

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    July 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : July 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    t as pas cherche bien loin
    https://www.google.fr/#q=Conversion+...uantieme+shell

    trios ou quatrième réponse paf la fonction inverse toute prête



    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
     
    Bonjour, 
     
    Comme promis merci de trouver ci-dessous la solution : Création d'un programme en perl. 
    supposons que le quantième est 56 de l'année 2008. 
     
    Code source : 
     
    #!/usr/bin/perl 
    use POSIX; 
    use strict; 
    use warnings; 
     
    # Récupération du quantième QtmStamp: 
     
    my $QtmStamp=$ARGV[0]-1; # au niveau perl le quantième commence par 0. 
     
     
    my $sec  =  0; 
    my $min  =  0; 
    my $hour =  0; 
    my $day  =  1; 
    my $mon  = 1   - 1; 
    my $year = $ARGV[1] - 1900; 
    my $wday = 0; 
    my $yday = 0; 
     
    #Calcul du tempstamp : 
     
    my $unixtime = mktime ($sec, $min, $hour, $day, $mon, $year, $wday, $yday); 
    print "$unixtime\n"; 
     
     $QtmStamp = $QtmStamp*86400; #86400 = ((24*3600)) 
     $unixtime = $unixtime+$QtmStamp; 
     
    my $readable_time = localtime($unixtime); 
    print "$readable_time\n"; 
     
    Lancemment du perl & résultat : 
      DateCreaQu.pl 56 2008  
     
    Résultat : 
     1199167200 
     Mon Feb 25 00:00:00 2008

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    September 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : September 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Bonjour

    Merci tout d'abord pour ta réponse.

    J'avais trouvé ce lien et cette fonction. Mais je pensais qu'il y avait plus direct pour répondre à mon besoin (une option dans la gestion des dates par exemple).
    Puis j'aurais sans doute voulu trouver la requête correspondant exactement à ma demande.
    Bon, je vais tenter de voir comment inverser le script proposé.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    September 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : September 2007
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Voici le script que j'ai utilisé : une fonction suivie de deux appels à la fonction

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    ## Fonction de calcul du quantieme -------------------------------------------##
    function chkd
    {
    set -A Mmx 0 31 28 31 30 31 30 31 31 30 31 30 31
    (( D +=0 )) 2>/dev/null
    [[ $? = 0 ]] || Do=n
    [[ ${#D} = 8 ]] || Do=n
    if   [[ $Do = y ]]
    then
         typeset -L4 D8=$D
         (( D8 +=0 )) 2>/dev/null
         [[ ${#D8} = 4 ]] || Do=n
         if   [[ $Do = y ]]
         then
              typeset -R4 D4142=$D
              typeset -L2 D41=$D4142
              (( D41 +=0 )) 2>/dev/null
              [[ $? = 0 ]] || Do=n
              [[ $D41 -lt 1 || $D41 -ge ${#Mmx[*]} ]] && Do=n
              if   [[ $Do = y ]]
              then
                   typeset -R2 D42=$D4142
                   (( D42 +=0 )) 2>/dev/null
                   [[ $? = 0 ]] || Do=n
                   if   [[ $Do = y ]]
                   then
                        D2=0
                        typeset -R2 yy=$D8
                        if   [[ $yy -eq "00" ]]
                        then
                             (( Modulo400=D8%400 ))
                             (( Modulo400 == 0 )) && D2=1
                        else
                             (( Modulo4=D8%4 ))
                             (( Modulo4 == 0 )) && D2=1
                        fi
                        D42l=${Mmx[$D41]}
                        (( D42l == 28 )) && (( D42l +=D2 ))
                        [[ $D42 -gt $D42l ]]  && Do=n
                   fi
              fi
         fi
    fi
    R0=$D ; R1=$D8 ; R2=$D4142 ; R3=$D41 ; R4=$D42 ; R5=$D2
    }
     
    ## Calcul du quantieme pour date min -----------------------------------------##
    set -A Adj 0 0 31 59 90 120 151 181 212 243 273 304 334
     
    Fm=${date_min}
     
    Do=y
    D=$dollar1
    D=$Fm
    chkd $D
    if   [[ $Do = n ]]
    then
         echo invalid from_date value \($Fm\)
         exit 1
    fi
    Fmy=$R1 ; Fmm=$R3 ; Fmd=$R4 ; Fm2=$D2
    (( Fmy +=0 )) ; (( Fmm +=0 )) ; (( Fmd +=0 )) ; (( Fm2 +=0 ))
     
    Fmq=${Adj[$Fmm]}
    (( Fmq += Fmd ))
    [[ $Fmm -gt 2 ]] && (( Fmq += Fm2 ))
     
    quantdeb=$Fmq
     
    ## Calcul du quantieme pour date max -----------------------------------------##
    set -A Adj 0 0 31 59 90 120 151 181 212 243 273 304 334
     
    Fm=${date_max}
     
    Do=y
    D=$dollar1
    D=$Fm
    chkd $D
    if   [[ $Do = n ]]
    then
         echo invalid from_date value \($Fm\)
         exit 1
    fi
    Fmy=$R1 ; Fmm=$R3 ; Fmd=$R4 ; Fm2=$D2
    (( Fmy +=0 )) ; (( Fmm +=0 )) ; (( Fmd +=0 )) ; (( Fm2 +=0 ))
     
    Fmq=${Adj[$Fmm]}
    (( Fmq += Fmd ))
    [[ $Fmm -gt 2 ]] && (( Fmq += Fm2 ))
     
    quantfin=$Fmq
     
    ## Fin des calculs de quantieme ----------------------------------------------##

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

Discussions similaires

  1. Conversion d'une date non standard en TDateTime ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 2
    Dernier message: 27/12/2006, 09h37
  2. conversion d'une date en chaine de caracteres
    Par salmer dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/10/2006, 17h31
  3. [C#] Conversion d'une date
    Par Jos dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/02/2006, 17h50
  4. Conversion d'une date jj/mm/aaaa en N°sem
    Par GD67 dans le forum Access
    Réponses: 2
    Dernier message: 16/11/2005, 10h02
  5. [date] conversion d'une date et compatibilité access
    Par WriteLN dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/01/2005, 15h03

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