Tags: jour,date

Sort by: Date / Title /

  1. 9 months ago by benoitbalon
    Parfois, on peut avoir besoin de retrouver la date à partir de son quantième, c'est à dire à partir de son numéro de jour dans l'année. Ce script permet de retourner la date comprise entre aujourd'hui et il y a un an si l'année n'est pas précisée, ou bien de retourner la date dans l'année qui a été précisée.
    1. #!/bin/sh
    2.  
    3. usage="Usage : $0 -q `date +'%j'` [-y `date +'%Y'`]"
    4.  
    5. # gestion de la ligne de commande
    6. if test "$#" -eq 2
    7. then
    8.         if test "$1" != "-q"
    9.         then
    10.                 echo $usage
    11.                 exit 1
    12.         fi
    13. elif test "$#" -eq 4
    14. then
    15.         if test "$1" != "-q"
    16.         then
    17.                 echo $usage
    18.                 exit 1
    19.         fi
    20.         if test "$3" != "-y"
    21.         then
    22.                 echo $usage
    23.                 exit 1
    24.         fi
    25. else
    26.         echo $usage
    27.         exit 1
    28. fi
    29.  
    30. qte=$2
    31.  
    32. if test "$4" != ""
    33. then
    34.         annee_act=$4
    35.         val_y=`expr $annee_act + 1 2>> /dev/null`
    36.         if test "$?" != "0"
    37.         then
    38.                 echo $usage
    39.                 exit 1
    40.         fi
    41. fi
    42.  
    43. # verification des nombres
    44. val_q=`expr $qte + 1 2>> /dev/null`
    45. if test "$?" != "0"
    46. then
    47.         echo $usage
    48.         exit 1
    49. fi
    50.  
    51. # depassements de valeurs
    52. if test "$qte" -gt 366
    53. then
    54.         echo $usage
    55.         exit 1
    56. fi
    57.  
    58. if test "$qte" -lt 1
    59. then
    60.         echo $usage
    61.         exit 1
    62. fi
    63.  
    64. # comparaison avec le quantieme actuel
    65. if test "$4" = ""
    66. then
    67.         qte_act=`date +'%j'`
    68.         annee_act=`date +'%Y'`
    69.  
    70.         if test "$qte_act" -gt "$qte"
    71.         then
    72.                 continue
    73.         elif test "$qte_act" -lt "$qte"
    74.         then
    75.                 # la date recherchee est dans l'annee passee
    76.                 annee_act=`expr $annee_act - 1`
    77.         else
    78.                 # la date recherchee est celle d'aujourd'hui
    79.                 echo `date +'%Y-%m-%d'`
    80.                 exit 0
    81.         fi
    82. fi
    83.  
    84.  
    85. bis=`expr $annee_act % 4`
    86. if test "$bis" -gt 0
    87. then
    88.         fin_janvier=31
    89.         fin_fevrier=`expr 31 + 28`
    90.         fin_mars=`expr 31 + 28 + 31`
    91.         fin_avril=`expr 31 + 28 + 31 + 30`
    92.         fin_mai=`expr 31 + 28 + 31 + 30 + 31`
    93.         fin_juin=`expr 31 + 28 + 31 + 30 + 31 + 30`
    94.         fin_juillet=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31`
    95.         fin_aout=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31`
    96.         fin_septembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30`
    97.         fin_octobre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31`
    98.         fin_novembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30`
    99.         #fin_decembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31`
    100. else
    101.         fin_janvier=31
    102.         fin_fevrier=`expr 31 + 29`
    103.         fin_mars=`expr 31 + 29 + 31`
    104.         fin_avril=`expr 31 + 29 + 31 + 30`
    105.         fin_mai=`expr 31 + 29 + 31 + 30 + 31`
    106.         fin_juin=`expr 31 + 29 + 31 + 30 + 31 + 30`
    107.         fin_juillet=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31`
    108.         fin_aout=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31`
    109.         fin_septembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30`
    110.         fin_octobre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31`
    111.         fin_novembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30`
    112.         #fin_decembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31`
    113. fi
    114.  
    115. # annee non bissextile
    116. if test "$qte" -eq 366 && test "$bis" -gt 0
    117. then
    118.         exit 1
    119. fi
    120.  
    121. # detection de l'annee bissextile
    122. if test "$qte" -le "$fin_janvier"
    123. then
    124.         mois="01"
    125.         jour=`expr $qte + 0`
    126. elif test "$qte" -le "$fin_fevrier"
    127. then
    128.         mois="02"
    129.         jour=`expr $qte - 31`
    130. elif test "$qte" -le "$fin_mars"
    131. then
    132.         mois="03"
    133.         if test "$bis" -gt 0
    134.         then
    135.                 jour="`expr $qte - 31 - 28`"
    136.         else
    137.                 jour="`expr $qte - 31 - 29`"
    138.         fi
    139. elif test "$qte" -le "$fin_avril"
    140. then
    141.         mois="04"
    142.         if test "$bis" -gt 0
    143.         then
    144.                 jour="`expr $qte - 31 - 28 - 31`"
    145.         else
    146.                 jour="`expr $qte - 31 - 29 - 31`"
    147.         fi
    148. elif test "$qte" -le "$fin_mai"
    149. then
    150.         mois="05"
    151.         if test "$bis" -gt 0
    152.         then
    153.                 jour="`expr $qte - 31 - 28 - 31 - 30`"
    154.         else
    155.                 jour="`expr $qte - 31 - 29 - 31 - 30`"
    156.         fi
    157. elif test "$qte" -le "$fin_juin"
    158. then
    159.         mois="06"
    160.         if test "$bis" -gt 0
    161.         then
    162.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31`"
    163.         else
    164.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31`"
    165.         fi
    166. elif test "$qte" -le "$fin_juillet"
    167. then
    168.         mois="07"
    169.         if test "$bis" -gt 0
    170.         then
    171.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30`"
    172.         else
    173.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30`"
    174.         fi
    175. elif test "$qte" -le "$fin_aout"
    176. then
    177.         mois="08"
    178.         if test "$bis" -gt 0
    179.         then
    180.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31`"
    181.         else
    182.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31`"
    183.         fi
    184. elif test "$qte" -le "$fin_septembre"
    185. then
    186.         mois="09"
    187.         if test "$bis" -gt 0
    188.         then
    189.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31`"
    190.         else
    191.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31`"
    192.         fi
    193. elif test "$qte" -le "$fin_octobre"
    194. then
    195.         mois="10"
    196.         if test "$bis" -gt 0
    197.         then
    198.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30`"
    199.         else
    200.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30`"
    201.         fi
    202. elif test "$qte" -le "$fin_novembre"
    203. then
    204.         mois="11"
    205.         if test "$bis" -gt 0
    206.         then
    207.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31`"
    208.         else
    209.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31`"
    210.         fi
    211. else
    212.         mois="12"
    213.         if test "$bis" -gt 0
    214.         then
    215.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31 - 30`"
    216.         else
    217.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31 - 30`"
    218.         fi
    219. fi
    220.  
    221. # affichage de la date trouvee
    222. if test "$jour" -lt 10
    223. then
    224.         echo "${annee_act}-${mois}-0${jour}"
    225. else
    226.         echo "${annee_act}-${mois}-${jour}"
    227. fi

First / Previous / Next / Last / Page 1 of 1 (1 posteets)