From Paul WOISARD, 2 Years ago, written in Bash.
This paste is a reply to Quel-Jour.sh from Paul WOISARD
- view diff
Embed
  1. #!/bin/sh
  2. clear
  3.  
  4. echo "Vous voulez savoir le jour d'une date donnée à partir du 1er Janvier 1900, ce petit script est fait pour vous"
  5. echo ""
  6. echo "On va vous demander d'abord le jour, puis le mois et finalement l'année (en chiffre) :"
  7.  
  8. j=0
  9. TESTinit=$(echo "$j == 1544654210" | bc)
  10.  
  11. until [ $TESTinit -eq 1 ]
  12. do
  13. echo ""
  14. echo -n "Quel Jour ? "
  15. read j
  16. until [ $j -ge 1 ] && [ $j -le 31 ]
  17. do
  18.     echo "Il faut taper le jour en chiffre et sous le format xx!! Et compris en 01 et 31 Pas $j"
  19.     echo -n "Quel Jour ? "
  20.     read j
  21. done
  22.  
  23. echo "OK"
  24.  
  25. echo -n "Quel Mois ? "
  26. read m
  27.  
  28. until [ $m -ge 1 ] && [ $m -le 12 ]
  29. do
  30.     echo "Il faut taper le mois en chiffre et sous le format xx!! Et compris en 01 et 12. Et pas $m"
  31.     echo -n "Quel Mois ? "
  32.     read m
  33. done
  34.  
  35. echo "OK"
  36.  
  37. echo -n "Quel année ? "
  38. read a
  39.  
  40. until [[ "${a}" =~ ^[-+]?[0-9]+$ ]] && [ $a -ge 1900 ]
  41. do
  42.     echo "Il faut taper l'année en chiffre et sous le format xxxx!! et supérieur ou égal çà 1900. Et pas $a"
  43.     echo -n "Quel année ? "
  44.     read a
  45. done
  46.  
  47. case "$m" in
  48.         "2" | "02" )
  49.         divaa=$(echo "$a/100" | bc -l)
  50.         let "divab = $a/100"
  51.         divab=$(echo "$divab*1.00000000000000000000" | bc)
  52.         TESTa=$(echo "$divaa!=$divab" | bc)
  53.    
  54.         divba=$(echo "$a/400" | bc -l)
  55.         let "divbb = $a/400"
  56.         divbb=$(echo "$divbb*1.00000000000000000000" | bc)
  57.         TESTb=$(echo "$divba==$divbb" | bc)
  58.        
  59.         divca=$(echo "$a/4" | bc -l)
  60.         let "divcb = $a/4"
  61.         divcb=$(echo "$divcb*1.00000000000000000000" | bc)
  62.         TESTc=$(echo "$divca==$divcb" | bc)
  63.        
  64.         if [ $TESTa -eq 1 ] && [ $TESTb -eq 1 ]
  65.         then
  66.             vnf="28"
  67.         elif [ $TESTc -eq 1 ]
  68.         then
  69.             vnf="29"
  70.         else
  71.             vnf="28"
  72.         fi
  73.        
  74.         TESTinit=$(echo "$j <= $vnf" | bc) ;;
  75.        
  76.         "4" | "04" | "6" | "06" | "9" | "09" | "11" )
  77.         TESTinit=$(echo "$j <= 30" | bc) ;;
  78.         "1" | "01" | "3" | "03" | "5" | "05" | "7" | "07" | "8" | "08" | "10" | "12" )
  79.         TESTinit=$(echo "$j <= 31" | bc) ;;
  80.         *)  ;;
  81. esac
  82.  
  83. if [ $TESTinit -ne 1 ]
  84. then
  85.     echo "...Il faut entrer une date existante"
  86. fi
  87.  
  88. done
  89.  
  90. echo "OK"
  91.  
  92. let "an = $a - 1900"
  93.  
  94. let "bix = $an/4"
  95.  
  96. bix=${bix#-}
  97.  
  98. let "bix = $bix+1"
  99.  
  100. ane=${an#-}
  101.  
  102. ann=$(echo "($ane/4)+1" | bc -l)
  103.  
  104. bixe=$(echo "$bix*1.00000000000000000000" | bc)
  105.  
  106. for ((i = 1900 ; i <= $a ; i += 4))
  107. do
  108.     let "z=$i"
  109.     divaa=$(echo "$z/100" | bc -l)
  110.     let "divab = $z/100"
  111.     divac=$(echo "$divab*1.00000000000000000000" | bc)
  112.     TESTa=$(echo "$divaa==$divac" | bc)
  113.  
  114.    
  115.     divba=$(echo "$z/400" | bc -l)
  116.     let "divbb = $z/400"
  117.     divbc=$(echo "$divbb*1.00000000000000000000" | bc)
  118.     TESTb=$(echo "$divba!=$divbc" | bc)
  119.    
  120.     if [ $TESTa -eq 1 ] && [ $TESTb -eq 1 ]
  121.     then
  122.         let "bix = $bix-1"
  123.     fi
  124. done
  125.  
  126. divaa=$(echo "$a/100" | bc -l)
  127. let "divab = $a/100"
  128. divab=$(echo "$divab*1.00000000000000000000" | bc)
  129. TESTa=$(echo "$divaa!=$divab" | bc)
  130.    
  131. divba=$(echo "$a/400" | bc -l)
  132. let "divbb = $a/400"
  133. divbb=$(echo "$divbb*1.00000000000000000000" | bc)
  134. TESTb=$(echo "$divba==$divbb" | bc)
  135.  
  136. TEST=$(echo "$ann==$bixe" | bc)
  137.  
  138. if [ $TESTb -eq 1 ]
  139. then
  140.     let "bix = $bix-1"
  141. elif [ $TESTa -eq 1 ] && [ $TEST -eq 1 ] && [ $m -lt 3 ]
  142. then
  143.     let "bix = $bix-1"
  144. fi
  145.  
  146. case "$m" in
  147.         "1" | "01" ) let "jpm = 0"
  148.               mois="Janvier"     ;;
  149.         "2" | "02" ) let "jpm = 31"
  150.               mois="Février"     ;;
  151.         "3" | "03" ) let "jpm = 59"
  152.               mois="Mars"        ;;
  153.         "4" | "04" ) let "jpm = 90"
  154.               mois="Avril"       ;;
  155.         "5" | "05" ) let "jpm = 120"
  156.               mois="Mai"         ;;
  157.         "6" | "06" ) let "jpm = 151"
  158.               mois="Juin"        ;;
  159.         "7" | "07" ) let "jpm = 181"
  160.               mois="Juillet"     ;;
  161.         "8" | "08" ) let "jpm = 212"
  162.               mois="Août"        ;;
  163.         "9" | "09" ) let "jpm = 243"
  164.               mois="Septembre"   ;;
  165.         "10") let "jpm = 273"
  166.               mois="Octobre"    ;;
  167.         "11") let "jpm = 304"
  168.               mois="Novembre"   ;;
  169.         "12") let "jpm = 334"
  170.               mois="Décembre"   ;;
  171.         *) echo "pb" ;;
  172. esac
  173.  
  174. case "$j" in
  175.         "1" | "01" ) let "d = 1" ;;
  176.         "2" | "02" ) let "d = 2" ;;
  177.         "3" | "03" ) let "d = 3" ;;
  178.         "4" | "04" ) let "d = 4" ;;
  179.         "5" | "05" ) let "d = 5" ;;
  180.         "6" | "06" ) let "d = 6" ;;
  181.         "7" | "07" ) let "d = 7" ;;
  182.         "8" | "08" ) let "d = 8" ;;
  183.         "9" | "09" ) let "d = 9" ;;
  184.         *) let "d = $j" ;;
  185. esac
  186.  
  187.  
  188. let "NbJoursTotals = $an * 365 + $bix + $jpm + $d"
  189.  
  190. echo "Nombre de jours entre la date entrée et le 1er Janvier 1900 est de $NbJoursTotals"
  191.  
  192. while [ $NbJoursTotals -gt 7 ]
  193. do
  194. let "NbJoursTotals = $NbJoursTotals - 7"
  195. done
  196.  
  197. case "$NbJoursTotals" in
  198.         "1" ) d="Lundi" ;;
  199.         "2" ) d="Mardi" ;;
  200.         "3" ) d="Mercredi" ;;
  201.         "4" ) d="Jeudi" ;;
  202.         "5" ) d="Vendredi";;
  203.         "6" ) d="Samedi" ;;
  204.         "7" ) d="Dimanche" ;;
  205.         *) echo "pb" ;;
  206. esac
  207.  
  208. echo "La date que vous avez entrée est le $d $j $mois $a"
  209.  
  210.  

Replies to Quel-Jour.sh rss

Title Name Language When
Quel-Jour.sh Paul WOISARD bash 2 Years ago.