{"id":711,"date":"2016-03-26T21:17:40","date_gmt":"2016-03-26T21:17:40","guid":{"rendered":"http:\/\/blog.paranoidprofessor.com\/?p=711"},"modified":"2016-03-26T21:17:40","modified_gmt":"2016-03-26T21:17:40","slug":"command-line-fun-juliane-day-number-to-gregorian","status":"publish","type":"post","link":"https:\/\/blog.paranoidprofessor.com\/index.php\/2016\/03\/26\/command-line-fun-juliane-day-number-to-gregorian\/","title":{"rendered":"command line fun &#8211; juliane day number to gregorian"},"content":{"rendered":"<p>In a previous blog, I implemented a routine to convert a <a href=\"http:\/\/blog.paranoidprofessor.com\/index.php\/2016\/03\/21\/command-line-fun-julian-day-number\/\" target=\"_blank\">Gregorian date into a Juliane day number<\/a> to allow simple math and comparisons on dates.<\/p>\n<p>This was pretty cool but it is less useful if you cannot convert back into a user friendly version of the date.<\/p>\n<p>The conversion routines in the wikipedia entry also cover converting back to a Gregorian day, month and year.\u00a0 I have also implemented a routine to calculate the day of the week.<\/p>\n<div class=\"sbody-code\">\n<pre><code>#!\/bin\/bash\r\n\r\n# https:\/\/en.wikipedia.org\/wiki\/Julian_day#Converting_Julian_or_Gregorian_calendar_date_to_Julian_day_number\r\n\r\ntwodig()\r\n{\r\n\u00a0 val=$1\r\n\u00a0 retval=$val\r\n\r\n\u00a0 if [ $val -lt 10 ]\r\n\u00a0 then\r\n\u00a0\u00a0\u00a0 retval=`echo 0${val} `\r\n\u00a0 fi\r\n\u00a0 echo $retval\r\n}\r\n\r\n# div = floor(dividend \/ divisor)\r\ndiv()\r\n{\r\n\u00a0 echo $(( $1 \/ $2 ))\r\n}\r\n# quotient = dividend \/ divisor\r\nmodulo()\r\n{\r\n echo $(($1 % $2))\r\n}\r\n\r\n# the lowest whole number\r\nfloor()\r\n{\r\n\u00a0 X=$1\r\n\u00a0 echo ${X%.*}\r\n}\r\n\r\n# day of week name\r\ndayofweek()\r\n{\r\n\u00a0 expr=$1\r\n\r\n\u00a0 case $expr in\r\n\u00a0\u00a0 1) retval=mon;;\r\n\u00a0\u00a0 2) retval=tue;;\r\n\u00a0\u00a0 3) retval=wed;;\r\n\u00a0\u00a0 4) retval=thr;;\r\n\u00a0\u00a0 5) retval=fri;;\r\n\u00a0\u00a0 6) retval=sat;;\r\n\u00a0\u00a0 7) retval=sun;;\r\n\u00a0\u00a0 esac\r\n\r\n\u00a0\u00a0 echo $retval\r\n}\r\n\r\n# ordnal number of day of week\r\ndayofweekIdx()\r\n{ \r\n\u00a0 idx=`modulo $1 7`\r\n\u00a0 idx=`echo \"$idx + 1\" | bc -l`\r\n\u00a0 echo $idx\r\n}\r\n\r\n#####################################################################################################\r\n# calculate the actual gregorian day\/month\/year from the julian value\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #\r\n#####################################################################################################\r\ngetGregorian()\r\n{\r\n\u00a0 J=$1\r\n\r\n\u00a0 y=4716\r\n\u00a0 v=3\r\n\u00a0 j=1401\r\n\u00a0 u=5\r\n\u00a0 m=2\r\n\u00a0 s=153\r\n\u00a0 n=12\r\n\u00a0 w=2\r\n\u00a0 r=4\r\n\u00a0 B=274277\r\n\u00a0 p=1461\r\n\u00a0 C=\"(\u221238)\"\r\n\r\n\r\n\u00a0 # 1.\r\n\u00a0 #\r\n\u00a0 # f = jd + j + ((\u00a0\u00a0 ( 4 * J + B)\u00a0\u00a0 div 146097) * 3) div 4 + C\r\n\u00a0 #echo \"f = $J + $j + ((\u00a0\u00a0 ( 4 * $J + $B)\u00a0\u00a0 div 146097) * 3) div 4 + $C\"\r\n\u00a0 tmp=`echo \"4 * $J + $B\" | bc -l`\r\n\u00a0 tmp=`div $tmp 146097`\r\n\u00a0 tmp=`echo \"$tmp * 3\" | bc -l`\r\n\u00a0 tmp=`div $tmp 4`\r\n\u00a0 tmp=`echo \"$J + $j + $tmp - 38\" | bc -l`\r\n\u00a0 f=$tmp\r\n\u00a0 #echo f $f\r\n\r\n\r\n\u00a0 # 2.\r\n\u00a0 #\r\n\u00a0 # e = r * f + v\r\n\u00a0 #echo \"e= $r * $f + $v \"\r\n\u00a0 e=`echo \"$r * $f + $v \" | bc -l`\r\n\u00a0 #echo e $e\r\n\r\n\r\n\u00a0 # 3.\r\n\u00a0 #\r\n\u00a0 # g = mod (e,p) div r\r\n\u00a0 #echo \"g = mod ($e,$p) div $r\"\r\n\u00a0 g=`modulo $e $p`\r\n\u00a0 g=`div $g $r`\r\n\u00a0 #echo g $g\r\n\r\n\r\n\u00a0 # 4.\r\n\u00a0 #\r\n\u00a0 # h = u * g + w\r\n\u00a0 #echo \"h = $u * $g + $w\"\r\n\u00a0 h=`echo \"$u * $g + $w\" | bc -l`\r\n\u00a0 #echo h $h\r\n\r\n\u00a0 # 5.\r\n\u00a0 #\r\n\u00a0 # D = (mod(h,s)) div u + 1\r\n\u00a0 #echo \"D = (mod($h,$s)) div $u + 1\"\r\n\u00a0 D=`modulo $h $s`\r\n\u00a0 D=`div $D $u`\r\n\u00a0 D=`expr $D + 1`\r\n\u00a0 D=`twodig $D`\r\n\u00a0 #echo D $D\r\n\r\n\r\n\u00a0 # 6.\r\n\u00a0 #\r\n\u00a0 # M = mod(h div s + m, n) + 1\r\n\u00a0 #echo \"M =\u00a0 mod($h div $s + $m,$n) + 1\"\r\n\u00a0 M=`div $h $s`\r\n\u00a0 M=`expr $M + $m`\r\n\u00a0 M=`modulo $M $n`\r\n\u00a0 M=`expr $M + 1`\r\n\u00a0 M=`twodig $M`\r\n\u00a0 #echo M $M\r\n\r\n\r\n\u00a0 # 7.\r\n\u00a0 #\r\n\u00a0 # Y =\u00a0 (e div p) - y + (n + m - M) div n\r\n\u00a0 #echo \"Y =\u00a0 ($e div $p) - $y + ($n + $m - $M) div $n\"\r\n\u00a0 Y=`expr $n + $m - $M`\r\n\u00a0 Y=`div $Y $n`\r\n\u00a0 tmp=`div $e $p`\r\n\u00a0 Y=`expr $tmp - $y + $Y`\r\n\u00a0 #echo Y $Y\r\n\r\n\u00a0 echo $Y$M$D\r\n}\r\n\r\nJD=2451545\r\nUSERDATE=`getGregorian $JD`\r\nIDX=`dayofweekIdx $JD`\r\nDAYOFWEEK=`dayofweek $IDX`\r\necho $USERDATE is a $DAYOFWEEK\r\n\r\nidx=0\r\nwhile [ $idx -lt 15 ]\r\ndo\r\n\u00a0 JD=$((2451554 + $idx))\r\n\u00a0 IDX=`dayofweekIdx $JD`\r\n\u00a0 DAYOFWEEK=`dayofweek $IDX`\r\n\u00a0 echo $JD $IDX $DAYOFWEEK\r\n\r\n\u00a0 idx=$(($idx + 1))\r\ndone\r\n<\/code><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a previous blog, I implemented a routine to convert a Gregorian date into a Juliane day number to allow simple math and comparisons on dates. This was pretty cool but it is less useful if you cannot convert back &hellip; <a href=\"https:\/\/blog.paranoidprofessor.com\/index.php\/2016\/03\/26\/command-line-fun-juliane-day-number-to-gregorian\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,20],"tags":[17,39],"_links":{"self":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/711"}],"collection":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/comments?post=711"}],"version-history":[{"count":7,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/711\/revisions"}],"predecessor-version":[{"id":818,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/711\/revisions\/818"}],"wp:attachment":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/media?parent=711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/categories?post=711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/tags?post=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}