#!/usr/bin/python # converts a gregorian date to julian date # expects one or two arguments, first is date in dd.mm.yyyy, # second optional is time in hh:mm:ss. If time is omitted, # 12:00:00 is assumed import math, sys, string if len(sys.argv)==1: print "\n gd2jd.py converts a gregorian date to julian date." print "\n Usage: gd2jd.py dd.mm.yyyy [hh:mm:ss.ssss]\n" sys.exit() date=string.split(sys.argv[1], ".") dd=int(date[0]) mm=int(date[1]) yyyy=int(date[2]) if len(sys.argv)==3: time=string.split(sys.argv[2], ":") hh=float(time[0]) min=float(time[1]) sec=float(time[2]) else: hh=12.0 min=0.0 sec=0.0 UT=hh+min/60+sec/3600 print "UT="+`UT` total_seconds=hh*3600+min*60+sec fracday=total_seconds/86400 print "Fractional day: %f" % fracday # print dd,mm,yyyy, hh,min,sec, UT if (100*yyyy+mm-190002.5)>0: sig=1 else: sig=-1 JD = 367*yyyy - int(7*(yyyy+int((mm+9)/12))/4) + int(275*mm/9) + dd + 1721013.5 + UT/24 - 0.5*sig +0.5 months=["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] print "\n"+months[mm-1]+" %i, %i, %i:%i:%i UT = JD %f" % (dd, yyyy, hh, min, sec, JD), # Now calculate the fractional year. Do we have a leap year? daylist=[31,28,31,30,31,30,31,31,30,31,30,31] daylist2=[31,29,31,30,31,30,31,31,30,31,30,31] if (yyyy%4 != 0): days=daylist2 elif (yyyy%400 == 0): days=daylist2 elif (yyyy%100 == 0): days=daylist else: days=daylist2 daysum=0 for y in range(mm-1): daysum=daysum+days[y] daysum=daysum+dd-1+UT/24 if days[1]==29: fracyear=yyyy+daysum/366 else: fracyear=yyyy+daysum/365 print " = " + `fracyear`+"\n"