Source code for pyacs.lib.astrotime.cal2mjd

"""
Convert a calendar date (universal time) to modified Julian day (JD-2400000.5).
"""

[docs] def cal2mjd(day, month, year, ut=0.5): """ Convert a calendar date (universal time) to modified Julian day (JD-2400000.5). Parameters ---------- day : int or array-like Day of month. month : int or array-like Month (1-12). year : int or array-like Year. ut : float, optional Day fraction in [0., 1.[. Default 0.5 (middle of day). Returns ------- float or ndarray Modified Julian day. Notes ----- When ut is not provided, the middle of the day is used. Examples -------- >>> import pyacs >>> pyacs.cal2mjd(29,2,2000) >>> 51603.5 >>> pyacs.cal2mjd(29,2,2000,ut=0.0) >>> 51603.0 """ from ._common import __monthOK, __dayOK, __utOK import numpy as np if isinstance(day, list): day=np.array(day) month=np.array(month) year=np.array(year) if isinstance(day, np.ndarray): if not isinstance(ut, np.ndarray):ut=day*0.0+ut mjd=np.array(list(map(cal2mjd,day, month, year, ut))) else: # check arguments and raise an Error if not OK __monthOK(month) __dayOK(day, month, year) __utOK(ut) if (month <= 2): m = int(month+9) y = int(year-1) else: m = int(month-3) y = int(year) c = int(y/100) y = y-c*100 x1 = int(146097.0*c/4.0) x2 = int(1461.0*y/4.0) x3 = int((153.0*m+2.0)/5.0) mjd=int(x1+x2+x3+day-678882) mjd+=ut return(mjd)