Conversion de date avec AIX

Résolu
Bonjour,

J'ai un AIX 6.1.
J'ai regardé les post au sujet des conversions de date, mais les solutions demandent d'utiliser une commande qui n'existe pas avec AIX :
date --date

Donc sous AIX, j'ai deux variables avec un quantième et une année (exemple 335 15 qui correspond au 1er decembre 2015). Et je veux, à partir de ce quantieme retrouver une date avec le format jj/mm/aa (pour l'exemple 01/12/15). Comme puis-je faire en shell ? Merci

3 réponses

  1. Contributeur
    hello
    en Perl
    $ perl -e 'use Time::Piece; my $t=Time::Piece->strptime($ARGV[0], "%j %y "); print $t->strftime("%d/%m/%y\n")' "335 15"
    01/12/15
    1. Bonjour, mais j'ai pas Perl sur mon AIX, et je n'ai pas la possibilité de le rajouter. Je cherche une syntaxe en shell et uniquement en shell s'il vous plait. Merci
      1. Contributeur
        pas en C ?
      2. @dubcekBen non, je ne connais pas le C.
      3. Contributeur
        $ cat date.c
        #include <stdio.h>
        #include <time.h>
        main(int argc, char **argv)
        {
        struct tm tm;
        char buf[128];
        strptime(argv[1],"%j %y", &tm);
        strftime(buf, sizeof(buf), "%d/%m/%y", &tm);
        printf("%s\n", buf);
        }
        $ make date
        cc date.c -o date
        $ ./date "335 15"
        01/12/15
        $
    2. Bonjour,
      Voilà ce que j'ai fait. C'est peut être pas optimum, mais ça marche. Au cas où ça pourrait intéresser quelqu'un.

      ANNEE=$1
      QUANT=$2

      if [[ $ANNEE -le 0 ]] then
      echo "Année incorrecte"
      exit
      fi

      if [[ $(($ANNEE % 4)) -eq 0 && $(($ANNEE % 100)) -ne 0 || $(($ANNEE % 400)) -eq 0 ]] then
      echo " $ANNEE est bissextile"
      BIS=1
      else
      echo "$ANNEE non bissextile"
      BIS=0
      fi

      BORNSUP=`expr 365 + $BIS`
      if [[ $QUANT -le 1 || $QUANT -gt $BORNSUP ]] then
      echo "quantieme incorrect"
      exit
      fi

      TABJOUR[1]=31
      TABJOUR[2]=`expr $BIS + 59`
      TABJOUR[3]=`expr $BIS + 90`
      TABJOUR[4]=`expr $BIS + 120`
      TABJOUR[5]=`expr $BIS + 151`
      TABJOUR[6]=`expr $BIS + 181`
      TABJOUR[7]=`expr $BIS + 212`
      TABJOUR[8]=`expr $BIS + 243`
      TABJOUR[9]=`expr $BIS + 273`
      TABJOUR[10]=`expr $BIS + 304`
      TABJOUR[11]=`expr $BIS + 334`
      TABJOUR[12]=`expr $BIS + 366`

      CPT=1

      while [[ ${TABJOUR[$CPT]} -le $QUANT ]]
      do
      CPT=`expr $CPT + 1`
      done
      echo "CPT=$CPT"
      if [[ $CPT -eq 1 ]] then
      LeJour=$QUANT
      LeMois=1
      else
      CPT2=`expr $CPT - 1`
      LeJour=`expr $QUANT - ${TABJOUR[$CPT2]}`
      LeMois=$CPT
      fi
      echo "$LeJour/$LeMois/$ANNEE"