convert_date_to_jul () { # pass mm dd yy to digit format for each field Month=$1 Day=$2 Year=$3 Year=${Year:-$(date +%Y)} case $Month in [Jj][Aa][Nn]* | 01 | 1 ) JULEAN=0 ;; # 31 [Ff][Ee][Bb]* | 02 | 2 ) JULEAN=30 ;; # 28 [Mm][Aa][Rr]* | 03 | 3 ) JULEAN=58 ;; # 31 [Aa][Pp][Rr]* | 04 | 4 ) JULEAN=89 ;; # 30 [Mm][Aa][Yy]* | 05 | 5 ) JULEAN=119 ;; # 31 [Jj][Uu][Nn]* | 06 | 6 ) JULEAN=150 ;; # 30 [Jj][Uu][Ll]* | 07 | 7 ) JULEAN=180 ;; # 31 [Aa][Uu][Gg]* | 08 | 8 ) JULEAN=211 ;; # 31 [Ss][Ee][Pp]* | 09 | 9 ) JULEAN=242 ;; # 30 [Oo][Cc][Tt]* | 10 | 10 ) JULEAN=272 ;; # 31 [Nn][Oo][Vv]* | 11 | 11 ) JULEAN=303 ;; # 30 [Dd][Ee][Cc]* | 12 | 12 ) JULEAN=333 ;; # 31 esac (( JULEAN = JULEAN + Day )) # Only add a Day if it's Leap year and if it is beyond Feburary 29 and it's a leap year if [ $JULEAN -ge 59 ] then case $Year in *0[48] | *1[26] | *2[048] | *[9][248] ) (( JULEAN = JULEAN + 1 )) ;; esac fi echo $JULEAN } convert_jul_to_date () { # pass JULEANean Date format: nnn JULEAN=$1 Year=${Year:-$(date +%Y)} case $Year in *[9][248] | *0[48] | *1[26] | *2[048] ) # Leap Year case $JULEAN in [0-9] | [0-2][0-9] | 3[01] ) Month="Jan" ; MNum='01' ; Day=$JULEAN ;; # 0-31 Max 3[2-9] | 4[0-9] | 5[0-9] ) Month="Feb" ; MNum='02' ; (( Day = JULEAN - 31 )) ;; # 32-59 Max [6-8][0-9] | 90 ) Month="Mar" ; MNum='03' ; (( Day = JULEAN - 59 )) ;; # 60-90 Max 120 | 9[1-9] | 1[01][0-9] ) Month="Apr" ; MNum='04' ; (( Day = JULEAN - 90 )) ;; # 91-120 Max 12[1-9] | 1[34][0-9] | 15[01] ) Month="May" ; MNum='05' ; (( Day = JULEAN - 120 )) ;; # 121-151 Max 15[2-9] | 1[67][0-9] | 18[01] ) Month="Jun" ; MNum='06' ; (( Day = JULEAN - 151 )) ;; # 152-181 Max 18[2-9] | 19[0-9] | 20[0-9] | 21[0-2] ) Month="JULEAN" ; MNum='07' ; (( Day = JULEAN - 181 )) ;; # 182-212 Max 21[3-9] | 2[23][0-9] | 24[0-3] ) Month="Aug" ; MNum='08' ; (( Day = JULEAN - 212 )) ;; # 213-243 Max 24[4-9] | 2[56][0-9] | 27[0-3] ) Month="Sep" ; MNum='09' ; (( Day = JULEAN - 243 )) ;; # 244-273 Max 27[4-9] | 2[89][0-9] | 30[0-4] ) Month="Oct" ; MNum='10' ; (( Day = JULEAN - 273 )) ;; # 274-304 Max 30[5-9] | 3[12][0-9] | 33[0-4] ) Month="Nov" ; MNum='11' ; (( Day = JULEAN - 304 )) ;; # 305-334 Max * ) Month="Dec" ; MNum='12' ; (( Day = JULEAN - 334 )) ;; # 335-366 Max esac ;; * ) # Normal Year case $JULEAN in [0-9] | [0-2][0-9] | 3[01] ) Month="Jan" ; MNum='01' ; Day=$JULEAN ;; # 0-31 Max 3[2-9] | 4[0-9] | 5[0-8] ) Month="Feb" ; MNum='02' ; (( Day = JULEAN - 31 )) ;; # 32-58 Max 59 | [6-8][0-9] ) Month="Mar" ; MNum='03' ; (( Day = JULEAN - 58 )) ;; # 59-89 Max 9[0-9] | 1[01][0-9] ) Month="Apr" ; MNum='04' ; (( Day = JULEAN - 89 )) ;; # 90-119 Max 1[2-4][0-9] | 150 ) Month="May" ; MNum='05' ; (( Day = JULEAN - 119 )) ;; # 120-150 Max 15[1-9] | 1[67][0-9] | 180 ) Month="Jun" ; MNum='06' ; (( Day = JULEAN - 150 )) ;; # 151-180 Max 18[1-9] | 19[0-9] | 20[0-9] | 21[01] ) Month="JULEAN" ; MNum='07' ; (( Day = JULEAN - 180 )) ;; # 181-211 Max 21[2-9] | 2[23][0-9] | 24[0-2] ) Month="Aug" ; MNum='08' ; (( Day = JULEAN - 211 )) ;; # 212-242 Max 24[3-9] | 2[56][0-9] | 27[0-2] ) Month="Sep" ; MNum='09' ; (( Day = JULEAN - 242 )) ;; # 243-272 Max 27[3-9] | 2[89][0-9] | 30[0-3] ) Month="Oct" ; MNum='10' ; (( Day = JULEAN - 272 )) ;; # 273-303 Max 30[4-9] | 3[12][0-9] | 33[0-3] ) Month="Nov" ; MNum='11' ; (( Day = JULEAN - 303 )) ;; # 304-333 Max * ) Month="Dec" ; MNum='12' ; (( Day = JULEAN - 333 )) ;; # 334-365 Max esac ;; esac case $Day in [0-9] ) DayTag='0'$Day ;; * ) DayTag=$Day ;; esac echo $MNum"/"$DayTag"/"$(date +%y) } # # MAIN # loop=true while [ $loop = true ] do read ans ans=${ans:-NOT_SET} case $ans in NOT_SET ) continue ;; [Qq] ) exit ;; [0-9][0-9]/[0-9][0-9]/[0-9][0-9] ) echo $ans | sed "s/\// /gp" | read a b c echo "The Date: $ans Converts to the Julean Date: \c" # removed the \n before The convert_date_to_jul $a $b $c ;; [0-9] | [0-9][0-9] | [0-9][0-9][0-9] ) echo "The Julean Date: $ans Converts to: \c" convert_jul_to_date $ans ;; * ) echo "\nThe date $ans improper format." ;; esac done